home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 52 65 63 65 69 76 65 64 | 3a 20 62 79 20 67 77 2e |Received|: by gw.|
|00000010| 68 6f 6d 65 2e 76 69 78 | 2e 63 6f 6d 20 69 64 20 |home.vix|.com id |
|00000020| 41 41 31 38 30 31 34 3b | 20 54 75 65 2c 20 31 20 |AA18014;| Tue, 1 |
|00000030| 4e 6f 76 20 39 34 20 32 | 33 3a 30 35 3a 33 34 20 |Nov 94 2|3:05:34 |
|00000040| 2d 30 38 30 30 0a 52 65 | 63 65 69 76 65 64 3a 20 |-0800.Re|ceived: |
|00000050| 66 72 6f 6d 20 6d 69 6d | 61 73 2e 63 63 73 2e 64 |from mim|as.ccs.d|
|00000060| 65 61 6b 69 6e 2e 65 64 | 75 2e 61 75 20 28 6d 69 |eakin.ed|u.au (mi|
|00000070| 6d 61 73 2e 63 63 73 2e | 64 65 61 6b 69 6e 2e 65 |mas.ccs.|deakin.e|
|00000080| 64 75 2e 61 75 20 5b 31 | 32 38 2e 31 38 34 2e 31 |du.au [1|28.184.1|
|00000090| 39 2e 33 5d 29 20 62 79 | 20 68 65 73 74 69 61 2e |9.3]) by| hestia.|
|000000a0| 63 63 73 2e 64 65 61 6b | 69 6e 2e 65 64 75 2e 61 |ccs.deak|in.edu.a|
|000000b0| 75 20 28 38 2e 36 2e 39 | 2f 38 2e 36 2e 39 29 20 |u (8.6.9|/8.6.9) |
|000000c0| 77 69 74 68 20 45 53 4d | 54 50 20 69 64 20 53 41 |with ESM|TP id SA|
|000000d0| 41 31 33 32 34 38 20 66 | 6f 72 20 3c 76 69 78 69 |A13248 f|or <vixi|
|000000e0| 65 40 76 69 78 2e 63 6f | 6d 3e 3b 20 57 65 64 2c |e@vix.co|m>; Wed,|
|000000f0| 20 32 20 4e 6f 76 20 31 | 39 39 34 20 31 38 3a 30 | 2 Nov 1|994 18:0|
|00000100| 35 3a 32 39 20 2b 31 31 | 30 30 0a 46 72 6f 6d 3a |5:29 +11|00.From:|
|00000110| 20 54 69 6d 20 43 6f 6f | 6b 20 3c 74 69 6d 40 64 | Tim Coo|k <tim@d|
|00000120| 65 61 6b 69 6e 2e 65 64 | 75 2e 61 75 3e 0a 52 65 |eakin.ed|u.au>.Re|
|00000130| 63 65 69 76 65 64 3a 20 | 28 74 69 6d 40 6c 6f 63 |ceived: |(tim@loc|
|00000140| 61 6c 68 6f 73 74 29 20 | 62 79 20 6d 69 6d 61 73 |alhost) |by mimas|
|00000150| 2e 63 63 73 2e 64 65 61 | 6b 69 6e 2e 65 64 75 2e |.ccs.dea|kin.edu.|
|00000160| 61 75 20 28 38 2e 36 2e | 38 2e 31 2f 38 2e 36 2e |au (8.6.|8.1/8.6.|
|00000170| 39 29 20 69 64 20 53 41 | 41 30 31 35 34 39 20 66 |9) id SA|A01549 f|
|00000180| 6f 72 20 76 69 78 69 65 | 40 76 69 78 2e 63 6f 6d |or vixie|@vix.com|
|00000190| 3b 20 57 65 64 2c 20 32 | 20 4e 6f 76 20 31 39 39 |; Wed, 2| Nov 199|
|000001a0| 34 20 31 38 3a 30 35 3a | 32 34 20 2b 31 31 30 30 |4 18:05:|24 +1100|
|000001b0| 0a 44 61 74 65 3a 20 57 | 65 64 2c 20 32 20 4e 6f |.Date: W|ed, 2 No|
|000001c0| 76 20 31 39 39 34 20 31 | 38 3a 30 35 3a 32 34 20 |v 1994 1|8:05:24 |
|000001d0| 2b 31 31 30 30 0a 4d 65 | 73 73 61 67 65 2d 49 64 |+1100.Me|ssage-Id|
|000001e0| 3a 20 3c 31 39 39 34 31 | 31 30 32 30 37 30 35 2e |: <19941|1020705.|
|000001f0| 53 41 41 30 31 35 34 39 | 40 6d 69 6d 61 73 2e 63 |SAA01549|@mimas.c|
|00000200| 63 73 2e 64 65 61 6b 69 | 6e 2e 65 64 75 2e 61 75 |cs.deaki|n.edu.au|
|00000210| 3e 0a 54 6f 3a 20 70 61 | 75 6c 40 76 69 78 2e 63 |>.To: pa|ul@vix.c|
|00000220| 6f 6d 0a 53 75 62 6a 65 | 63 74 3a 20 64 6e 73 66 |om.Subje|ct: dnsf|
|00000230| 69 6e 64 2e 73 68 61 72 | 0a 0a 23 21 2f 62 69 6e |ind.shar|..#!/bin|
|00000240| 2f 73 68 0a 23 20 54 68 | 69 73 20 69 73 20 61 20 |/sh.# Th|is is a |
|00000250| 73 68 65 6c 6c 20 61 72 | 63 68 69 76 65 20 28 73 |shell ar|chive (s|
|00000260| 68 61 72 20 33 2e 33 32 | 29 0a 23 20 6d 61 64 65 |har 3.32|).# made|
|00000270| 20 31 31 2f 30 32 2f 31 | 39 39 34 20 30 35 3a 35 | 11/02/1|994 05:5|
|00000280| 36 20 55 54 43 20 62 79 | 20 74 69 6d 40 6d 69 6d |6 UTC by| tim@mim|
|00000290| 61 73 2e 63 63 73 2e 64 | 65 61 6b 69 6e 2e 65 64 |as.ccs.d|eakin.ed|
|000002a0| 75 2e 61 75 0a 23 20 53 | 6f 75 72 63 65 20 64 69 |u.au.# S|ource di|
|000002b0| 72 65 63 74 6f 72 79 20 | 2f 74 6d 70 5f 6d 6e 74 |rectory |/tmp_mnt|
|000002c0| 2f 68 6f 6d 65 2f 74 69 | 6d 2f 74 69 6d 2f 73 72 |/home/ti|m/tim/sr|
|000002d0| 63 2f 64 6e 73 66 69 6e | 64 0a 23 0a 23 20 65 78 |c/dnsfin|d.#.# ex|
|000002e0| 69 73 74 69 6e 67 20 66 | 69 6c 65 73 20 57 49 4c |isting f|iles WIL|
|000002f0| 4c 20 62 65 20 6f 76 65 | 72 77 72 69 74 74 65 6e |L be ove|rwritten|
|00000300| 0a 23 0a 23 20 54 68 69 | 73 20 73 68 61 72 20 63 |.#.# Thi|s shar c|
|00000310| 6f 6e 74 61 69 6e 73 3a | 0a 23 20 6c 65 6e 67 74 |ontains:|.# lengt|
|00000320| 68 20 20 6d 6f 64 65 20 | 20 20 20 20 20 20 6e 61 |h mode | na|
|00000330| 6d 65 0a 23 20 2d 2d 2d | 2d 2d 2d 20 2d 2d 2d 2d |me.# ---|--- ----|
|00000340| 2d 2d 2d 2d 2d 2d 20 2d | 2d 2d 2d 2d 2d 2d 2d 2d |------ -|--------|
|00000350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000370| 2d 0a 23 20 20 20 31 37 | 38 38 20 2d 72 77 2d 72 |-.# 17|88 -rw-r|
|00000380| 2d 2d 2d 2d 2d 20 52 45 | 41 44 4d 45 0a 23 20 20 |----- RE|ADME.# |
|00000390| 20 36 36 38 30 20 2d 72 | 77 2d 72 2d 2d 2d 2d 2d | 6680 -r|w-r-----|
|000003a0| 20 64 6e 73 66 69 6e 64 | 2e 70 6c 0a 23 20 20 20 | dnsfind|.pl.# |
|000003b0| 32 39 30 30 20 2d 72 77 | 78 72 2d 78 2d 2d 2d 20 |2900 -rw|xr-x--- |
|000003c0| 66 69 6e 64 2d 6d 78 0a | 23 20 20 20 34 39 31 33 |find-mx.|# 4913|
|000003d0| 20 2d 72 77 78 72 2d 78 | 2d 2d 2d 20 6d 61 6b 65 | -rwxr-x|--- make|
|000003e0| 68 6f 73 74 73 0a 23 0a | 69 66 20 74 6f 75 63 68 |hosts.#.|if touch|
|000003f0| 20 32 3e 26 31 20 7c 20 | 66 67 72 65 70 20 27 61 | 2>&1 | |fgrep 'a|
|00000400| 6d 63 27 20 3e 20 2f 64 | 65 76 2f 6e 75 6c 6c 0a |mc' > /d|ev/null.|
|00000410| 20 74 68 65 6e 20 54 4f | 55 43 48 3d 74 6f 75 63 | then TO|UCH=touc|
|00000420| 68 0a 20 65 6c 73 65 20 | 54 4f 55 43 48 3d 74 72 |h. else |TOUCH=tr|
|00000430| 75 65 0a 66 69 0a 23 20 | 3d 3d 3d 3d 3d 3d 3d 3d |ue.fi.# |========|
|00000440| 3d 3d 3d 3d 3d 20 52 45 | 41 44 4d 45 20 3d 3d 3d |===== RE|ADME ===|
|00000450| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 0a 65 63 68 6f |========|===.echo|
|00000460| 20 22 78 20 2d 20 65 78 | 74 72 61 63 74 69 6e 67 | "x - ex|tracting|
|00000470| 20 52 45 41 44 4d 45 20 | 28 54 65 78 74 29 22 0a | README |(Text)".|
|00000480| 73 65 64 20 27 73 2f 5e | 58 2f 2f 27 20 3c 3c 20 |sed 's/^|X//' << |
|00000490| 27 53 48 41 52 5f 45 4f | 46 27 20 3e 20 52 45 41 |'SHAR_EO|F' > REA|
|000004a0| 44 4d 45 20 26 26 0a 58 | 43 6f 6e 74 61 69 6e 65 |DME &&.X|Containe|
|000004b0| 64 20 68 65 72 65 69 6e | 20 69 73 20 61 20 50 65 |d herein| is a Pe|
|000004c0| 72 6c 20 6c 69 62 72 61 | 72 79 2c 20 22 64 6e 73 |rl libra|ry, "dns|
|000004d0| 66 69 6e 64 2e 70 6c 22 | 2c 20 61 6e 64 20 74 77 |find.pl"|, and tw|
|000004e0| 6f 20 75 74 69 6c 69 74 | 69 65 73 0a 58 74 68 61 |o utilit|ies.Xtha|
|000004f0| 74 20 75 73 65 20 74 68 | 65 20 6c 69 62 72 61 72 |t use th|e librar|
|00000500| 79 2c 20 22 6d 61 6b 65 | 68 6f 73 74 73 22 20 61 |y, "make|hosts" a|
|00000510| 6e 64 20 22 66 69 6e 64 | 2d 6d 78 22 2e 0a 58 0a |nd "find|-mx"..X.|
|00000520| 58 54 68 65 20 50 65 72 | 6c 20 72 6f 75 74 69 6e |XThe Per|l routin|
|00000530| 65 20 22 64 6e 73 66 69 | 6e 64 22 20 69 73 20 6c |e "dnsfi|nd" is l|
|00000540| 69 6b 65 20 74 68 65 20 | 50 65 72 6c 20 22 66 69 |ike the |Perl "fi|
|00000550| 6e 64 22 20 72 6f 75 74 | 69 6e 65 20 28 66 6f 75 |nd" rout|ine (fou|
|00000560| 6e 64 20 69 6e 0a 58 66 | 69 6e 64 2e 70 6c 20 69 |nd in.Xf|ind.pl i|
|00000570| 6e 20 79 6f 75 72 20 50 | 65 72 6c 20 22 6c 69 62 |n your P|erl "lib|
|00000580| 22 20 64 69 72 65 63 74 | 6f 72 79 29 2c 20 65 78 |" direct|ory), ex|
|00000590| 63 65 70 74 20 69 74 20 | 69 73 20 66 6f 72 20 44 |cept it |is for D|
|000005a0| 4e 53 20 7a 6f 6e 65 73 | 0a 58 69 6e 73 74 65 61 |NS zones|.Xinstea|
|000005b0| 64 20 6f 66 20 79 6f 75 | 72 20 66 69 6c 65 20 73 |d of you|r file s|
|000005c0| 79 73 74 65 6d 2e 20 20 | 22 64 6e 73 66 69 6e 64 |ystem. |"dnsfind|
|000005d0| 22 20 63 61 6c 6c 73 20 | 61 20 75 73 65 72 2d 73 |" calls |a user-s|
|000005e0| 75 70 70 6c 69 65 64 20 | 72 6f 75 74 69 6e 65 2c |upplied |routine,|
|000005f0| 0a 58 22 64 6e 73 77 61 | 6e 74 65 64 22 20 28 6a |.X"dnswa|nted" (j|
|00000600| 75 73 74 20 6c 69 6b 65 | 20 22 66 69 6e 64 22 20 |ust like| "find" |
|00000610| 63 61 6c 6c 73 20 22 77 | 61 6e 74 65 64 22 29 2c |calls "w|anted"),|
|00000620| 20 77 69 74 68 20 76 61 | 6c 75 65 73 20 66 72 6f | with va|lues fro|
|00000630| 6d 20 61 6c 6c 0a 58 44 | 4e 53 20 72 65 73 6f 75 |m all.XD|NS resou|
|00000640| 72 63 65 20 72 65 63 6f | 72 64 73 20 66 6f 75 6e |rce reco|rds foun|
|00000650| 64 20 73 75 70 70 6c 69 | 65 64 20 69 6e 20 67 6c |d suppli|ed in gl|
|00000660| 6f 62 61 6c 20 76 61 72 | 69 61 62 6c 65 73 2e 20 |obal var|iables. |
|00000670| 20 53 65 65 0a 58 64 6e | 73 66 69 6e 64 2e 70 6c | See.Xdn|sfind.pl|
|00000680| 20 66 6f 72 20 6d 6f 72 | 65 20 69 6e 66 6f 2e 0a | for mor|e info..|
|00000690| 58 0a 58 59 6f 75 20 77 | 69 6c 6c 20 6e 65 65 64 |X.XYou w|ill need|
|000006a0| 20 74 77 6f 20 70 69 65 | 63 65 73 20 6f 66 20 73 | two pie|ces of s|
|000006b0| 6f 66 74 77 61 72 65 20 | 74 6f 20 75 73 65 20 64 |oftware |to use d|
|000006c0| 6e 73 66 69 6e 64 3a 0a | 58 0a 58 20 20 20 20 2d |nsfind:.|X.X -|
|000006d0| 20 50 65 72 6c 2e 20 20 | 56 65 72 73 69 6f 6e 20 | Perl. |Version |
|000006e0| 34 20 6f 72 20 68 69 67 | 68 65 72 20 73 68 6f 75 |4 or hig|her shou|
|000006f0| 6c 64 20 62 65 20 67 6f | 6f 64 20 65 6e 6f 75 67 |ld be go|od enoug|
|00000700| 68 2e 0a 58 20 20 20 20 | 2d 20 64 69 67 2e 20 20 |h..X |- dig. |
|00000710| 56 65 72 73 69 6f 6e 20 | 32 2e 30 20 6f 72 20 68 |Version |2.0 or h|
|00000720| 69 67 68 65 72 20 73 68 | 6f 75 6c 64 20 62 65 20 |igher sh|ould be |
|00000730| 67 6f 6f 64 20 65 6e 6f | 75 67 68 2e 0a 58 0a 58 |good eno|ugh..X.X|
|00000740| 54 68 65 20 74 77 6f 20 | 75 74 69 6c 69 74 69 65 |The two |utilitie|
|00000750| 73 20 77 6f 75 6c 64 20 | 73 65 72 76 65 20 61 73 |s would |serve as|
|00000760| 20 67 6f 6f 64 20 65 78 | 61 6d 70 6c 65 73 20 6f | good ex|amples o|
|00000770| 66 20 68 6f 77 20 64 6e | 73 66 69 6e 64 20 63 61 |f how dn|sfind ca|
|00000780| 6e 20 62 65 0a 58 75 73 | 65 64 2c 20 62 75 74 20 |n be.Xus|ed, but |
|00000790| 77 65 20 61 63 74 75 61 | 6c 6c 79 20 64 6f 20 75 |we actua|lly do u|
|000007a0| 73 65 20 74 68 65 6d 20 | 6c 6f 63 61 6c 6c 79 2e |se them |locally.|
|000007b0| 20 20 22 6d 61 6b 65 68 | 6f 73 74 73 22 20 67 65 | "makeh|osts" ge|
|000007c0| 6e 65 72 61 74 65 73 0a | 58 6f 75 72 20 2f 65 74 |nerates.|Xour /et|
|000007d0| 63 2f 68 6f 73 74 73 20 | 61 6e 64 20 22 66 69 6e |c/hosts |and "fin|
|000007e0| 64 2d 6d 78 22 20 67 65 | 6e 65 72 61 74 65 73 20 |d-mx" ge|nerates |
|000007f0| 6f 75 72 20 2f 65 74 63 | 2f 6d 61 69 6c 2f 73 65 |our /etc|/mail/se|
|00000800| 6e 64 6d 61 69 6c 2e 63 | 77 2e 0a 58 0a 58 2f 65 |ndmail.c|w..X.X/e|
|00000810| 74 63 2f 68 6f 73 74 73 | 20 69 73 20 77 65 6c 6c |tc/hosts| is well|
|00000820| 20 75 6e 64 65 72 73 74 | 6f 6f 64 2c 20 61 6e 64 | underst|ood, and|
|00000830| 20 73 68 6f 75 6c 64 20 | 62 65 20 67 65 6e 65 72 | should |be gener|
|00000840| 61 74 65 64 20 66 72 6f | 6d 20 44 4e 53 20 69 66 |ated fro|m DNS if|
|00000850| 20 79 6f 75 0a 58 68 61 | 76 65 20 44 4e 53 2e 20 | you.Xha|ve DNS. |
|00000860| 20 54 68 65 72 65 20 61 | 72 65 20 61 20 6e 75 6d | There a|re a num|
|00000870| 62 65 72 20 6f 66 20 6f | 74 68 65 72 20 75 74 69 |ber of o|ther uti|
|00000880| 6c 69 74 69 65 73 20 69 | 6e 20 74 68 65 20 42 49 |lities i|n the BI|
|00000890| 4e 44 20 22 63 6f 6e 74 | 72 69 62 22 0a 58 64 69 |ND "cont|rib".Xdi|
|000008a0| 72 65 63 74 6f 72 79 20 | 74 68 61 74 20 77 69 6c |rectory |that wil|
|000008b0| 6c 20 64 6f 20 62 61 73 | 69 63 61 6c 6c 79 20 74 |l do bas|ically t|
|000008c0| 68 65 20 73 61 6d 65 20 | 74 68 69 6e 67 20 61 73 |he same |thing as|
|000008d0| 20 22 6d 61 6b 65 68 6f | 73 74 73 22 2e 0a 58 0a | "makeho|sts"..X.|
|000008e0| 58 2f 65 74 63 2f 6d 61 | 69 6c 2f 73 65 6e 64 6d |X/etc/ma|il/sendm|
|000008f0| 61 69 6c 2e 63 77 20 69 | 73 20 61 20 66 69 6c 65 |ail.cw i|s a file|
|00000900| 20 75 73 65 64 20 62 79 | 20 53 65 6e 64 4d 61 69 | used by| SendMai|
|00000910| 6c 20 28 69 66 20 79 6f | 75 20 68 61 76 65 20 69 |l (if yo|u have i|
|00000920| 74 0a 58 63 6f 6e 66 69 | 67 75 72 65 64 20 74 68 |t.Xconfi|gured th|
|00000930| 61 74 20 77 61 79 29 20 | 74 6f 20 6d 61 74 63 68 |at way) |to match|
|00000940| 20 64 6f 6d 61 69 6e 73 | 20 6f 72 20 68 6f 73 74 | domains| or host|
|00000950| 20 6e 61 6d 65 73 20 74 | 68 61 74 20 69 74 20 63 | names t|hat it c|
|00000960| 6f 6e 73 69 64 65 72 73 | 0a 58 65 71 75 69 76 61 |onsiders|.Xequiva|
|00000970| 6c 65 6e 74 20 74 6f 20 | 74 68 65 20 6c 6f 63 61 |lent to |the loca|
|00000980| 6c 20 68 6f 73 74 2e 20 | 20 54 68 69 73 20 69 73 |l host. | This is|
|00000990| 20 74 75 72 6e 20 6d 61 | 6b 65 73 20 53 65 6e 64 | turn ma|kes Send|
|000009a0| 4d 61 69 6c 20 72 6f 75 | 74 65 20 6d 61 69 6c 0a |Mail rou|te mail.|
|000009b0| 58 61 64 64 72 65 73 73 | 65 64 20 74 6f 20 61 6e |Xaddress|ed to an|
|000009c0| 79 20 73 75 63 68 20 64 | 6f 6d 61 69 6e 20 6f 72 |y such d|omain or|
|000009d0| 20 68 6f 73 74 20 6e 61 | 6d 65 20 74 6f 20 74 68 | host na|me to th|
|000009e0| 65 20 22 6c 6f 63 61 6c | 22 20 6d 61 69 6c 65 72 |e "local|" mailer|
|000009f0| 2c 20 77 68 69 63 68 0a | 58 64 65 6c 69 76 65 72 |, which.|Xdeliver|
|00000a00| 73 20 74 68 65 20 6d 61 | 69 6c 20 74 6f 20 61 20 |s the ma|il to a |
|00000a10| 6c 6f 63 61 6c 20 75 73 | 65 72 2e 20 20 42 65 63 |local us|er. Bec|
|00000a20| 61 75 73 65 20 77 65 20 | 68 61 76 65 20 61 20 63 |ause we |have a c|
|00000a30| 65 6e 74 72 61 6c 69 73 | 65 64 20 6d 61 69 6c 0a |entralis|ed mail.|
|00000a40| 58 68 75 62 20 77 68 69 | 63 68 20 61 63 63 65 70 |Xhub whi|ch accep|
|00000a50| 74 73 20 6d 61 69 6c 20 | 66 6f 72 20 61 20 6c 61 |ts mail |for a la|
|00000a60| 72 67 65 20 6e 75 6d 62 | 65 72 20 6f 66 20 73 79 |rge numb|er of sy|
|00000a70| 73 74 65 6d 73 2c 20 77 | 65 20 6a 75 73 74 20 75 |stems, w|e just u|
|00000a80| 73 65 0a 58 22 66 69 6e | 64 2d 6d 78 22 20 74 6f |se.X"fin|d-mx" to|
|00000a90| 20 6c 6f 63 61 74 65 20 | 61 6c 6c 20 22 68 69 67 | locate |all "hig|
|00000aa0| 68 65 73 74 20 70 72 65 | 66 65 72 65 6e 63 65 22 |hest pre|ference"|
|00000ab0| 20 4d 58 20 72 65 63 6f | 72 64 73 20 77 68 69 63 | MX reco|rds whic|
|00000ac0| 68 20 6d 61 74 63 68 0a | 58 6f 75 72 20 68 75 62 |h match.|Xour hub|
|00000ad0| 20 61 73 20 74 68 65 20 | 4d 58 2c 20 61 6e 64 20 | as the |MX, and |
|00000ae0| 70 75 74 20 74 68 65 6d | 20 69 6e 20 2f 65 74 63 |put them| in /etc|
|00000af0| 2f 6d 61 69 6c 2f 73 65 | 6e 64 6d 61 69 6c 2e 63 |/mail/se|ndmail.c|
|00000b00| 77 2e 20 20 54 68 65 72 | 65 20 61 72 65 0a 58 6f |w. Ther|e are.Xo|
|00000b10| 74 68 65 72 20 77 61 79 | 73 20 74 6f 20 67 65 74 |ther way|s to get|
|00000b20| 20 53 65 6e 64 4d 61 69 | 6c 20 74 6f 20 64 6f 20 | SendMai|l to do |
|00000b30| 77 68 61 74 20 79 6f 75 | 20 77 61 6e 74 2c 20 62 |what you| want, b|
|00000b40| 75 74 20 74 68 69 73 20 | 77 61 73 20 74 68 65 0a |ut this |was the.|
|00000b50| 58 6e 65 61 74 65 73 74 | 20 77 61 79 20 66 6f 72 |Xneatest| way for|
|00000b60| 20 75 73 2e 0a 58 0a 58 | 2d 2d 0a 58 54 69 6d 20 | us..X.X|--.XTim |
|00000b70| 43 6f 6f 6b 0a 58 53 79 | 73 74 65 6d 73 20 45 6e |Cook.XSy|stems En|
|00000b80| 67 69 6e 65 65 72 0a 58 | 43 6f 6d 70 75 74 69 6e |gineer.X|Computin|
|00000b90| 67 20 26 20 43 6f 6d 6d | 75 6e 69 63 61 74 69 6f |g & Comm|unicatio|
|00000ba0| 6e 73 20 53 65 72 76 69 | 63 65 73 0a 58 44 65 61 |ns Servi|ces.XDea|
|00000bb0| 6b 69 6e 20 55 6e 69 76 | 65 72 73 69 74 79 0a 58 |kin Univ|ersity.X|
|00000bc0| 32 20 4e 6f 76 20 31 39 | 39 34 0a 53 48 41 52 5f |2 Nov 19|94.SHAR_|
|00000bd0| 45 4f 46 0a 24 54 4f 55 | 43 48 20 2d 61 6d 20 31 |EOF.$TOU|CH -am 1|
|00000be0| 31 30 32 31 36 35 35 39 | 34 20 52 45 41 44 4d 45 |10216559|4 README|
|00000bf0| 20 26 26 0a 63 68 6d 6f | 64 20 30 36 34 30 20 52 | &&.chmo|d 0640 R|
|00000c00| 45 41 44 4d 45 20 7c 7c | 0a 65 63 68 6f 20 22 72 |EADME |||.echo "r|
|00000c10| 65 73 74 6f 72 65 20 6f | 66 20 52 45 41 44 4d 45 |estore o|f README|
|00000c20| 20 66 61 69 6c 65 64 22 | 0a 73 65 74 20 60 77 63 | failed"|.set `wc|
|00000c30| 20 2d 63 20 52 45 41 44 | 4d 45 60 3b 57 63 5f 63 | -c READ|ME`;Wc_c|
|00000c40| 3d 24 31 0a 69 66 20 74 | 65 73 74 20 22 24 57 63 |=$1.if t|est "$Wc|
|00000c50| 5f 63 22 20 21 3d 20 22 | 31 37 38 38 22 3b 20 74 |_c" != "|1788"; t|
|00000c60| 68 65 6e 0a 09 65 63 68 | 6f 20 6f 72 69 67 69 6e |hen..ech|o origin|
|00000c70| 61 6c 20 73 69 7a 65 20 | 31 37 38 38 2c 20 63 75 |al size |1788, cu|
|00000c80| 72 72 65 6e 74 20 73 69 | 7a 65 20 24 57 63 5f 63 |rrent si|ze $Wc_c|
|00000c90| 0a 66 69 0a 23 20 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |.fi.# ==|========|
|00000ca0| 3d 3d 3d 20 64 6e 73 66 | 69 6e 64 2e 70 6c 20 3d |=== dnsf|ind.pl =|
|00000cb0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 0a 65 63 |========|=====.ec|
|00000cc0| 68 6f 20 22 78 20 2d 20 | 65 78 74 72 61 63 74 69 |ho "x - |extracti|
|00000cd0| 6e 67 20 64 6e 73 66 69 | 6e 64 2e 70 6c 20 28 54 |ng dnsfi|nd.pl (T|
|00000ce0| 65 78 74 29 22 0a 73 65 | 64 20 27 73 2f 5e 58 2f |ext)".se|d 's/^X/|
|00000cf0| 2f 27 20 3c 3c 20 27 53 | 48 41 52 5f 45 4f 46 27 |/' << 'S|HAR_EOF'|
|00000d00| 20 3e 20 64 6e 73 66 69 | 6e 64 2e 70 6c 20 26 26 | > dnsfi|nd.pl &&|
|00000d10| 0a 58 23 20 64 6e 73 66 | 69 6e 64 20 2d 20 6c 69 |.X# dnsf|ind - li|
|00000d20| 6b 65 20 66 69 6e 64 28 | 31 29 2c 20 62 75 74 20 |ke find(|1), but |
|00000d30| 66 6f 72 20 44 4e 53 20 | 64 61 74 61 0a 58 23 0a |for DNS |data.X#.|
|00000d40| 58 23 20 24 49 64 3a 20 | 64 6e 73 66 69 6e 64 2e |X# $Id: |dnsfind.|
|00000d50| 73 68 61 72 2c 76 20 38 | 2e 32 20 31 39 39 36 2f |shar,v 8|.2 1996/|
|00000d60| 31 30 2f 32 35 20 31 37 | 3a 30 37 3a 35 35 20 76 |10/25 17|:07:55 v|
|00000d70| 69 78 69 65 20 45 78 70 | 20 24 0a 58 23 20 24 53 |ixie Exp| $.X# $S|
|00000d80| 6f 75 72 63 65 3a 20 2f | 70 72 6f 6a 2f 73 72 63 |ource: /|proj/src|
|00000d90| 2f 69 73 63 2f 63 76 73 | 2d 31 2f 62 69 6e 64 2f |/isc/cvs|-1/bind/|
|00000da0| 63 6f 6e 74 72 69 62 2f | 6d 69 73 63 2f 64 6e 73 |contrib/|misc/dns|
|00000db0| 66 69 6e 64 2e 73 68 61 | 72 2c 76 20 24 0a 58 23 |find.sha|r,v $.X#|
|00000dc0| 0a 58 23 20 53 59 4e 4f | 50 53 49 53 0a 58 23 09 |.X# SYNO|PSIS.X#.|
|00000dd0| 23 21 2f 75 73 72 2f 6c | 6f 63 61 6c 2f 62 69 6e |#!/usr/l|ocal/bin|
|00000de0| 2f 70 65 72 6c 0a 58 23 | 09 72 65 71 75 69 72 65 |/perl.X#|.require|
|00000df0| 20 27 64 6e 73 66 69 6e | 64 2e 70 6c 27 3b 0a 58 | 'dnsfin|d.pl';.X|
|00000e00| 23 09 26 64 6e 73 66 69 | 6e 64 20 28 27 6d 79 2e |#.&dnsfi|nd ('my.|
|00000e10| 64 6f 6d 61 69 6e 2e 63 | 6f 6d 27 2c 20 27 31 2e |domain.c|om', '1.|
|00000e20| 31 32 38 2e 69 6e 2d 61 | 64 64 72 2e 61 72 70 61 |128.in-a|ddr.arpa|
|00000e30| 27 29 3b 0a 58 23 09 73 | 75 62 20 64 6e 73 77 61 |');.X#.s|ub dnswa|
|00000e40| 6e 74 65 64 20 7b 0a 58 | 23 09 20 20 20 20 70 72 |nted {.X|#. pr|
|00000e50| 69 6e 74 66 20 28 22 25 | 34 30 73 20 25 31 30 73 |intf ("%|40s %10s|
|00000e60| 20 25 73 5c 6e 22 2c 20 | 24 7a 6f 6e 65 2c 20 24 | %s\n", |$zone, $|
|00000e70| 74 79 70 65 2c 20 24 76 | 61 6c 75 65 29 3b 0a 58 |type, $v|alue);.X|
|00000e80| 23 09 7d 0a 58 23 0a 58 | 23 20 44 45 53 43 52 49 |#.}.X#.X|# DESCRI|
|00000e90| 50 54 49 4f 4e 0a 58 23 | 09 52 65 63 75 72 73 69 |PTION.X#|.Recursi|
|00000ea0| 76 65 6c 79 20 73 65 61 | 63 68 65 73 20 44 4e 53 |vely sea|ches DNS|
|00000eb0| 20 7a 6f 6e 65 73 2c 20 | 61 6e 64 20 63 61 6c 6c | zones, |and call|
|00000ec0| 73 20 74 68 65 20 75 73 | 65 72 2d 64 65 66 69 6e |s the us|er-defin|
|00000ed0| 65 64 0a 58 23 09 73 75 | 62 72 6f 75 74 69 6e 65 |ed.X#.su|broutine|
|00000ee0| 20 22 64 6e 73 77 61 6e | 74 65 64 22 20 66 6f 72 | "dnswan|ted" for|
|00000ef0| 20 65 61 63 68 20 72 65 | 63 6f 72 64 20 66 6f 75 | each re|cord fou|
|00000f00| 6e 64 2e 20 20 46 69 65 | 6c 64 73 20 66 72 6f 6d |nd. Fie|lds from|
|00000f10| 20 74 68 65 0a 58 23 09 | 72 65 63 6f 72 64 20 61 | the.X#.|record a|
|00000f20| 72 65 20 70 75 74 20 69 | 6e 20 74 68 65 20 66 6f |re put i|n the fo|
|00000f30| 6c 6c 6f 77 69 6e 67 20 | 67 6c 6f 62 61 6c 20 76 |llowing |global v|
|00000f40| 61 72 69 61 62 6c 65 73 | 3a 0a 58 23 0a 58 23 09 |ariables|:.X#.X#.|
|00000f50| 20 20 20 20 24 70 61 72 | 65 6e 74 5f 7a 6f 6e 65 | $par|ent_zone|
|00000f60| 09 54 68 65 20 70 61 72 | 65 6e 74 20 7a 6f 6e 65 |.The par|ent zone|
|00000f70| 20 77 68 69 63 68 20 69 | 73 20 62 65 69 6e 67 0a | which i|s being.|
|00000f80| 58 23 09 09 09 09 65 78 | 61 6d 69 6e 65 64 20 76 |X#....ex|amined v|
|00000f90| 69 61 20 61 20 22 64 69 | 67 20 61 78 66 72 22 20 |ia a "di|g axfr" |
|00000fa0| 28 7a 6f 6e 65 0a 58 23 | 09 09 09 09 74 72 61 6e |(zone.X#|....tran|
|00000fb0| 73 66 65 72 29 20 63 6f | 6d 6d 61 6e 64 2e 0a 58 |sfer) co|mmand..X|
|00000fc0| 23 09 20 20 20 20 24 73 | 65 72 76 65 72 09 09 54 |#. $s|erver..T|
|00000fd0| 68 65 20 63 61 6e 6f 6e | 69 63 61 6c 20 6e 61 6d |he canon|ical nam|
|00000fe0| 65 20 6f 66 20 74 68 65 | 20 70 72 69 6d 61 72 79 |e of the| primary|
|00000ff0| 0a 58 23 09 09 09 09 73 | 65 72 76 65 72 20 66 6f |.X#....s|erver fo|
|00001000| 72 20 74 68 69 73 20 28 | 70 61 72 65 6e 74 29 20 |r this (|parent) |
|00001010| 7a 6f 6e 65 2e 20 20 46 | 72 6f 6d 0a 58 23 09 09 |zone. F|rom.X#..|
|00001020| 09 09 74 68 65 20 53 4f | 41 20 72 65 63 6f 72 64 |..the SO|A record|
|00001030| 2e 0a 58 23 09 20 20 20 | 20 24 7a 6f 6e 65 09 09 |..X#. | $zone..|
|00001040| 46 75 6c 6c 79 2d 71 75 | 61 6c 69 66 69 65 64 20 |Fully-qu|alified |
|00001050| 64 6f 6d 61 69 6e 2d 6e | 61 6d 65 2e 0a 58 23 09 |domain-n|ame..X#.|
|00001060| 20 20 20 20 24 74 69 6d | 65 6f 75 74 09 09 53 65 | $tim|eout..Se|
|00001070| 63 6f 6e 64 73 20 62 65 | 66 6f 72 65 20 72 65 63 |conds be|fore rec|
|00001080| 6f 72 64 20 69 73 20 6f | 75 74 20 6f 66 20 64 61 |ord is o|ut of da|
|00001090| 74 65 2e 0a 58 23 09 20 | 20 20 20 24 74 79 70 65 |te..X#. | $type|
|000010a0| 09 09 52 65 63 6f 72 64 | 20 74 79 70 65 20 28 41 |..Record| type (A|
|000010b0| 2c 20 4d 58 2c 20 43 4e | 41 4d 45 2c 20 4e 53 2c |, MX, CN|AME, NS,|
|000010c0| 20 65 74 63 29 2e 0a 58 | 23 09 20 20 20 20 24 76 | etc)..X|#. $v|
|000010d0| 61 6c 75 65 09 09 56 61 | 6c 75 65 20 6f 66 20 74 |alue..Va|lue of t|
|000010e0| 68 65 20 72 65 63 6f 72 | 64 2e 0a 58 0a 58 23 0a |he recor|d..X.X#.|
|000010f0| 58 23 20 53 61 66 65 20 | 72 65 74 75 72 6e 20 66 |X# Safe |return f|
|00001100| 72 6f 6d 20 22 72 65 71 | 75 69 72 65 22 0a 58 23 |rom "req|uire".X#|
|00001110| 0a 58 31 3b 0a 58 0a 58 | 23 23 23 23 23 23 23 23 |.X1;.X.X|########|
|00001120| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001130| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001140| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001150| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001160| 23 23 23 23 23 23 0a 58 | 23 20 64 6e 73 66 69 6e |######.X|# dnsfin|
|00001170| 64 0a 58 23 0a 58 73 75 | 62 20 64 6e 73 66 69 6e |d.X#.Xsu|b dnsfin|
|00001180| 64 20 7b 0a 58 20 20 20 | 20 6c 6f 63 61 6c 20 28 |d {.X | local (|
|00001190| 40 7a 6f 6e 65 73 29 20 | 3d 20 40 5f 3b 0a 58 23 |@zones) |= @_;.X#|
|000011a0| 20 20 20 47 4c 4f 42 41 | 4c 20 28 24 70 61 72 65 | GLOBA|L ($pare|
|000011b0| 6e 74 5f 7a 6f 6e 65 29 | 0a 58 23 20 20 20 47 4c |nt_zone)|.X# GL|
|000011c0| 4f 42 41 4c 20 28 24 73 | 65 72 76 65 72 29 0a 58 |OBAL ($s|erver).X|
|000011d0| 23 20 20 20 47 4c 4f 42 | 41 4c 20 28 24 7a 6f 6e |# GLOB|AL ($zon|
|000011e0| 65 29 0a 58 23 20 20 20 | 47 4c 4f 42 41 4c 20 28 |e).X# |GLOBAL (|
|000011f0| 24 74 69 6d 65 6f 75 74 | 29 0a 58 23 20 20 20 47 |$timeout|).X# G|
|00001200| 4c 4f 42 41 4c 20 28 24 | 74 79 70 65 29 0a 58 23 |LOBAL ($|type).X#|
|00001210| 20 20 20 47 4c 4f 42 41 | 4c 20 28 24 76 61 6c 75 | GLOBA|L ($valu|
|00001220| 65 29 0a 58 23 20 20 20 | 47 4c 4f 42 41 4c 20 28 |e).X# |GLOBAL (|
|00001230| 25 5f 7a 6f 6e 65 73 5f | 73 65 61 72 63 68 65 64 |%_zones_|searched|
|00001240| 29 0a 58 0a 58 20 20 20 | 20 6c 6f 63 61 6c 20 28 |).X.X | local (|
|00001250| 24 70 61 72 65 6e 74 5f | 7a 6f 6e 65 5f 6c 29 3b |$parent_|zone_l);|
|00001260| 0a 58 20 20 20 20 6c 6f | 63 61 6c 20 28 24 73 65 |.X lo|cal ($se|
|00001270| 72 76 65 72 5f 6c 29 3b | 0a 58 20 20 20 20 6c 6f |rver_l);|.X lo|
|00001280| 63 61 6c 20 28 24 7a 6f | 6e 65 5f 6c 29 3b 0a 58 |cal ($zo|ne_l);.X|
|00001290| 20 20 20 20 6c 6f 63 61 | 6c 20 28 24 74 69 6d 65 | loca|l ($time|
|000012a0| 6f 75 74 5f 6c 29 3b 0a | 58 20 20 20 20 6c 6f 63 |out_l);.|X loc|
|000012b0| 61 6c 20 28 24 74 79 70 | 65 5f 6c 29 3b 0a 58 20 |al ($typ|e_l);.X |
|000012c0| 20 20 20 6c 6f 63 61 6c | 20 28 24 76 61 6c 75 65 | local| ($value|
|000012d0| 5f 6c 29 3b 0a 58 20 20 | 20 20 6c 6f 63 61 6c 20 |_l);.X | local |
|000012e0| 28 40 73 75 62 5f 7a 6f | 6e 65 73 29 3b 0a 58 20 |(@sub_zo|nes);.X |
|000012f0| 20 20 20 6c 6f 63 61 6c | 20 28 40 64 61 74 61 29 | local| (@data)|
|00001300| 3b 0a 58 20 20 20 20 6c | 6f 63 61 6c 20 28 24 72 |;.X l|ocal ($r|
|00001310| 65 63 6f 72 64 29 3b 0a | 58 20 20 20 20 6c 6f 63 |ecord);.|X loc|
|00001320| 61 6c 20 28 24 74 6d 70 | 29 3b 0a 58 0a 58 20 20 |al ($tmp|);.X.X |
|00001330| 20 20 66 6f 72 65 61 63 | 68 20 24 70 61 72 65 6e | foreac|h $paren|
|00001340| 74 5f 7a 6f 6e 65 5f 6c | 20 28 40 7a 6f 6e 65 73 |t_zone_l| (@zones|
|00001350| 29 20 7b 0a 58 09 23 0a | 58 09 23 20 46 69 6e 64 |) {.X.#.|X.# Find|
|00001360| 20 70 72 69 6d 61 72 79 | 0a 58 09 23 0a 58 09 69 | primary|.X.#.X.i|
|00001370| 66 20 28 73 75 62 73 74 | 72 20 28 24 70 61 72 65 |f (subst|r ($pare|
|00001380| 6e 74 5f 7a 6f 6e 65 5f | 6c 2c 20 2d 31 29 20 6e |nt_zone_|l, -1) n|
|00001390| 65 20 27 2e 27 29 20 7b | 0a 58 09 20 20 20 20 24 |e '.') {|.X. $|
|000013a0| 70 61 72 65 6e 74 5f 7a | 6f 6e 65 5f 6c 20 2e 3d |parent_z|one_l .=|
|000013b0| 20 27 2e 27 3b 0a 58 09 | 7d 0a 58 09 40 64 61 74 | '.';.X.|}.X.@dat|
|000013c0| 61 20 3d 20 26 64 69 67 | 20 28 24 70 61 72 65 6e |a = &dig| ($paren|
|000013d0| 74 5f 7a 6f 6e 65 5f 6c | 2c 20 27 73 6f 61 27 29 |t_zone_l|, 'soa')|
|000013e0| 3b 0a 58 09 69 66 20 28 | 21 20 40 64 61 74 61 29 |;.X.if (|! @data)|
|000013f0| 20 7b 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 20 | {.X. | return |
|00001400| 75 6e 64 65 66 3b 0a 58 | 09 7d 0a 58 09 40 64 61 |undef;.X|.}.X.@da|
|00001410| 74 61 20 3d 20 73 70 6c | 69 74 20 28 2f 5c 73 2b |ta = spl|it (/\s+|
|00001420| 2f 2c 20 73 68 69 66 74 | 20 28 40 64 61 74 61 29 |/, shift| (@data)|
|00001430| 29 3b 0a 58 09 24 73 65 | 72 76 65 72 5f 6c 20 3d |);.X.$se|rver_l =|
|00001440| 20 73 68 69 66 74 20 28 | 40 64 61 74 61 29 3b 0a | shift (|@data);.|
|00001450| 58 0a 58 09 23 0a 58 09 | 23 20 41 76 6f 69 64 20 |X.X.#.X.|# Avoid |
|00001460| 74 68 69 73 20 7a 6f 6e | 65 20 69 66 20 77 65 20 |this zon|e if we |
|00001470| 68 61 76 65 20 61 6c 72 | 65 61 64 79 20 73 65 61 |have alr|eady sea|
|00001480| 72 63 68 65 64 20 69 74 | 0a 58 09 23 0a 58 09 24 |rched it|.X.#.X.$|
|00001490| 74 6d 70 20 3d 20 24 70 | 61 72 65 6e 74 5f 7a 6f |tmp = $p|arent_zo|
|000014a0| 6e 65 5f 6c 3b 0a 58 09 | 24 74 6d 70 20 3d 7e 20 |ne_l;.X.|$tmp =~ |
|000014b0| 74 72 2f 5b 41 2d 5a 5d | 2f 5b 61 2d 7a 5d 2f 3b |tr/[A-Z]|/[a-z]/;|
|000014c0| 0a 58 09 6e 65 78 74 20 | 69 66 20 28 24 5f 7a 6f |.X.next |if ($_zo|
|000014d0| 6e 65 73 5f 73 65 61 72 | 63 68 65 64 7b 24 74 6d |nes_sear|ched{$tm|
|000014e0| 70 7d 29 3b 0a 58 0a 58 | 09 23 0a 58 09 23 20 54 |p});.X.X|.#.X.# T|
|000014f0| 72 61 6e 73 66 65 72 20 | 7a 6f 6e 65 0a 58 09 23 |ransfer |zone.X.#|
|00001500| 0a 58 09 23 23 23 70 72 | 69 6e 74 20 28 22 5b 41 |.X.###pr|int ("[A|
|00001510| 58 46 52 5d 20 24 70 61 | 72 65 6e 74 5f 7a 6f 6e |XFR] $pa|rent_zon|
|00001520| 65 5f 6c 5c 6e 22 29 3b | 0a 58 09 40 64 61 74 61 |e_l\n");|.X.@data|
|00001530| 20 3d 20 26 61 78 66 72 | 20 28 24 70 61 72 65 6e | = &axfr| ($paren|
|00001540| 74 5f 7a 6f 6e 65 5f 6c | 2c 20 24 73 65 72 76 65 |t_zone_l|, $serve|
|00001550| 72 5f 6c 29 3b 0a 58 09 | 69 66 20 28 21 20 40 64 |r_l);.X.|if (! @d|
|00001560| 61 74 61 29 20 7b 0a 58 | 09 20 20 20 20 72 65 74 |ata) {.X|. ret|
|00001570| 75 72 6e 20 75 6e 64 65 | 66 3b 0a 58 09 7d 0a 58 |urn unde|f;.X.}.X|
|00001580| 0a 58 09 23 0a 58 09 23 | 20 4e 6f 74 65 20 74 68 |.X.#.X.#| Note th|
|00001590| 69 73 20 7a 6f 6e 65 20 | 61 73 20 68 61 76 69 6e |is zone |as havin|
|000015a0| 67 20 62 65 65 6e 20 73 | 65 61 72 63 68 65 64 0a |g been s|earched.|
|000015b0| 58 09 23 0a 58 09 24 74 | 6d 70 20 3d 20 24 70 61 |X.#.X.$t|mp = $pa|
|000015c0| 72 65 6e 74 5f 7a 6f 6e | 65 5f 6c 3b 0a 58 09 24 |rent_zon|e_l;.X.$|
|000015d0| 74 6d 70 20 3d 7e 20 74 | 72 2f 5b 41 2d 5a 5d 2f |tmp =~ t|r/[A-Z]/|
|000015e0| 5b 61 2d 7a 5d 2f 3b 0a | 58 09 24 5f 7a 6f 6e 65 |[a-z]/;.|X.$_zone|
|000015f0| 73 5f 73 65 61 72 63 68 | 65 64 7b 24 74 6d 70 7d |s_search|ed{$tmp}|
|00001600| 20 3d 20 31 3b 0a 58 0a | 58 09 23 0a 58 09 23 20 | = 1;.X.|X.#.X.# |
|00001610| 50 72 6f 63 65 73 73 20 | 65 61 63 68 20 72 65 63 |Process |each rec|
|00001620| 6f 72 64 0a 58 09 23 0a | 58 09 66 6f 72 65 61 63 |ord.X.#.|X.foreac|
|00001630| 68 20 24 72 65 63 6f 72 | 64 20 28 40 64 61 74 61 |h $recor|d (@data|
|00001640| 29 20 7b 0a 58 09 20 20 | 20 20 28 24 7a 6f 6e 65 |) {.X. | ($zone|
|00001650| 5f 6c 2c 20 24 74 69 6d | 65 6f 75 74 5f 6c 2c 20 |_l, $tim|eout_l, |
|00001660| 24 74 79 70 65 5f 6c 2c | 20 24 76 61 6c 75 65 5f |$type_l,| $value_|
|00001670| 6c 29 20 3d 20 73 70 6c | 69 74 20 28 27 5c 73 2b |l) = spl|it ('\s+|
|00001680| 27 2c 20 24 72 65 63 6f | 72 64 2c 0a 58 09 09 09 |', $reco|rd,.X...|
|00001690| 09 09 09 09 20 20 20 20 | 20 20 34 29 3b 0a 58 09 |.... | 4);.X.|
|000016a0| 20 20 20 20 23 0a 58 09 | 20 20 20 20 23 20 57 65 | #.X.| # We|
|000016b0| 20 6f 6e 6c 79 20 77 61 | 6e 74 20 64 61 74 61 20 | only wa|nt data |
|000016c0| 69 6e 20 74 68 69 73 20 | 7a 6f 6e 65 0a 58 09 20 |in this |zone.X. |
|000016d0| 20 20 20 23 0a 58 09 20 | 20 20 20 6e 65 78 74 20 | #.X. | next |
|000016e0| 69 66 20 28 26 73 74 72 | 63 61 73 65 63 6d 70 20 |if (&str|casecmp |
|000016f0| 28 24 70 61 72 65 6e 74 | 5f 7a 6f 6e 65 5f 6c 2c |($parent|_zone_l,|
|00001700| 0a 58 09 09 09 09 20 20 | 73 75 62 73 74 72 20 28 |.X.... |substr (|
|00001710| 24 7a 6f 6e 65 5f 6c 2c | 20 30 20 2d 20 6c 65 6e |$zone_l,| 0 - len|
|00001720| 67 74 68 20 28 24 70 61 | 72 65 6e 74 5f 7a 6f 6e |gth ($pa|rent_zon|
|00001730| 65 5f 6c 29 29 29 0a 58 | 09 09 20 20 20 20 20 21 |e_l))).X|.. !|
|00001740| 3d 20 30 29 3b 0a 58 0a | 58 09 20 20 20 20 23 0a |= 0);.X.|X. #.|
|00001750| 58 09 20 20 20 20 23 20 | 43 61 6c 6c 20 74 68 65 |X. # |Call the|
|00001760| 20 75 73 65 72 2d 73 75 | 70 70 6c 69 65 64 20 73 | user-su|pplied s|
|00001770| 75 62 72 6f 75 74 69 6e | 65 0a 58 09 20 20 20 20 |ubroutin|e.X. |
|00001780| 23 0a 58 09 20 20 20 20 | 24 70 61 72 65 6e 74 5f |#.X. |$parent_|
|00001790| 7a 6f 6e 65 20 3d 20 24 | 70 61 72 65 6e 74 5f 7a |zone = $|parent_z|
|000017a0| 6f 6e 65 5f 6c 3b 0a 58 | 09 20 20 20 20 24 73 65 |one_l;.X|. $se|
|000017b0| 72 76 65 72 20 3d 20 24 | 73 65 72 76 65 72 5f 6c |rver = $|server_l|
|000017c0| 3b 0a 58 09 20 20 20 20 | 24 7a 6f 6e 65 20 3d 20 |;.X. |$zone = |
|000017d0| 24 7a 6f 6e 65 5f 6c 3b | 0a 58 09 20 20 20 20 24 |$zone_l;|.X. $|
|000017e0| 74 69 6d 65 6f 75 74 20 | 3d 20 24 74 69 6d 65 6f |timeout |= $timeo|
|000017f0| 75 74 5f 6c 3b 0a 58 09 | 20 20 20 20 24 74 79 70 |ut_l;.X.| $typ|
|00001800| 65 20 3d 20 24 74 79 70 | 65 5f 6c 3b 0a 58 09 20 |e = $typ|e_l;.X. |
|00001810| 20 20 20 24 76 61 6c 75 | 65 20 3d 20 24 76 61 6c | $valu|e = $val|
|00001820| 75 65 5f 6c 3b 0a 58 0a | 58 09 20 20 20 20 26 64 |ue_l;.X.|X. &d|
|00001830| 6e 73 77 61 6e 74 65 64 | 20 28 29 3b 0a 58 0a 58 |nswanted| ();.X.X|
|00001840| 09 20 20 20 20 23 0a 58 | 09 20 20 20 20 23 20 49 |. #.X|. # I|
|00001850| 73 20 69 74 20 61 20 73 | 75 62 2d 7a 6f 6e 65 2c |s it a s|ub-zone,|
|00001860| 20 61 6e 64 20 68 61 76 | 65 20 77 65 20 6e 6f 74 | and hav|e we not|
|00001870| 20 73 65 61 72 63 68 65 | 64 20 69 74 3f 0a 58 09 | searche|d it?.X.|
|00001880| 20 20 20 20 23 0a 58 09 | 20 20 20 20 6e 65 78 74 | #.X.| next|
|00001890| 20 69 66 20 28 26 73 74 | 72 63 61 73 65 63 6d 70 | if (&st|rcasecmp|
|000018a0| 20 28 24 74 79 70 65 5f | 6c 2c 20 27 4e 53 27 29 | ($type_|l, 'NS')|
|000018b0| 20 21 3d 20 30 29 3b 0a | 58 09 20 20 20 20 6e 65 | != 0);.|X. ne|
|000018c0| 78 74 20 69 66 20 28 21 | 20 26 69 73 5f 73 75 62 |xt if (!| &is_sub|
|000018d0| 5f 7a 6f 6e 65 20 28 24 | 7a 6f 6e 65 5f 6c 2c 20 |_zone ($|zone_l, |
|000018e0| 24 70 61 72 65 6e 74 5f | 7a 6f 6e 65 5f 6c 29 29 |$parent_|zone_l))|
|000018f0| 3b 0a 58 09 20 20 20 20 | 6e 65 78 74 20 69 66 20 |;.X. |next if |
|00001900| 28 67 72 65 70 20 28 24 | 5f 20 65 71 20 24 7a 6f |(grep ($|_ eq $zo|
|00001910| 6e 65 5f 6c 2c 20 40 73 | 75 62 5f 7a 6f 6e 65 73 |ne_l, @s|ub_zones|
|00001920| 29 29 3b 0a 58 09 20 20 | 20 20 23 0a 58 09 20 20 |));.X. | #.X. |
|00001930| 20 20 23 20 53 61 76 65 | 20 69 74 20 74 6f 20 73 | # Save| it to s|
|00001940| 65 61 72 63 68 20 6c 61 | 74 65 72 0a 58 09 20 20 |earch la|ter.X. |
|00001950| 20 20 23 0a 58 09 20 20 | 20 20 70 75 73 68 20 28 | #.X. | push (|
|00001960| 40 73 75 62 5f 7a 6f 6e | 65 73 2c 20 24 7a 6f 6e |@sub_zon|es, $zon|
|00001970| 65 5f 6c 29 3b 0a 58 09 | 7d 0a 58 0a 58 09 23 0a |e_l);.X.|}.X.X.#.|
|00001980| 58 09 23 20 52 65 63 75 | 72 73 65 20 28 64 65 70 |X.# Recu|rse (dep|
|00001990| 74 68 2d 66 69 72 73 74 | 29 20 66 6f 72 20 73 75 |th-first|) for su|
|000019a0| 62 2d 7a 6f 6e 65 73 0a | 58 09 23 0a 58 09 26 64 |b-zones.|X.#.X.&d|
|000019b0| 6e 73 66 69 6e 64 20 28 | 73 6f 72 74 20 28 40 73 |nsfind (|sort (@s|
|000019c0| 75 62 5f 7a 6f 6e 65 73 | 29 29 0a 58 20 20 20 20 |ub_zones|)).X |
|000019d0| 7d 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 31 3b |}.X r|eturn 1;|
|000019e0| 0a 58 7d 0a 58 0a 58 0a | 58 23 23 23 23 23 23 23 |.X}.X.X.|X#######|
|000019f0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001a00| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001a10| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001a20| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001a30| 23 23 23 23 23 23 23 0a | 58 23 20 69 73 5f 73 75 |#######.|X# is_su|
|00001a40| 62 5f 7a 6f 6e 65 0a 58 | 23 0a 58 73 75 62 20 69 |b_zone.X|#.Xsub i|
|00001a50| 73 5f 73 75 62 5f 7a 6f | 6e 65 20 7b 0a 58 20 20 |s_sub_zo|ne {.X |
|00001a60| 20 20 6c 6f 63 61 6c 20 | 28 24 7a 6f 6e 65 29 20 | local |($zone) |
|00001a70| 3d 20 73 68 69 66 74 20 | 28 40 5f 29 3b 0a 58 20 |= shift |(@_);.X |
|00001a80| 20 20 20 6c 6f 63 61 6c | 20 28 24 70 61 72 65 6e | local| ($paren|
|00001a90| 74 5f 7a 6f 6e 65 29 20 | 3d 20 73 68 69 66 74 20 |t_zone) |= shift |
|00001aa0| 28 40 5f 29 3b 0a 58 0a | 58 20 20 20 20 23 0a 58 |(@_);.X.|X #.X|
|00001ab0| 20 20 20 20 23 20 54 6f | 20 62 65 20 61 20 73 75 | # To| be a su|
|00001ac0| 62 2d 7a 6f 6e 65 2c 20 | 79 6f 75 20 73 68 6f 75 |b-zone, |you shou|
|00001ad0| 6c 64 20 68 61 76 65 20 | 61 20 64 6f 74 2c 20 74 |ld have |a dot, t|
|00001ae0| 68 65 6e 20 74 68 65 20 | 70 61 72 65 6e 74 20 7a |hen the |parent z|
|00001af0| 6f 6e 65 20 61 73 0a 58 | 20 20 20 20 23 20 61 20 |one as.X| # a |
|00001b00| 73 75 66 66 69 78 2e 0a | 58 20 20 20 20 23 0a 58 |suffix..|X #.X|
|00001b10| 0a 58 20 20 20 20 24 70 | 61 72 65 6e 74 5f 7a 6f |.X $p|arent_zo|
|00001b20| 6e 65 20 3d 20 27 2e 27 | 20 2e 20 24 70 61 72 65 |ne = '.'| . $pare|
|00001b30| 6e 74 5f 7a 6f 6e 65 3b | 0a 58 0a 58 20 20 20 20 |nt_zone;|.X.X |
|00001b40| 69 66 20 28 6c 65 6e 67 | 74 68 20 28 24 7a 6f 6e |if (leng|th ($zon|
|00001b50| 65 29 20 3c 3d 20 6c 65 | 6e 67 74 68 20 28 24 70 |e) <= le|ngth ($p|
|00001b60| 61 72 65 6e 74 5f 7a 6f | 6e 65 29 29 20 7b 0a 58 |arent_zo|ne)) {.X|
|00001b70| 09 72 65 74 75 72 6e 20 | 30 3b 0a 58 20 20 20 20 |.return |0;.X |
|00001b80| 7d 0a 58 0a 58 20 20 20 | 20 24 70 61 72 65 6e 74 |}.X.X | $parent|
|00001b90| 5f 7a 6f 6e 65 20 3d 7e | 20 74 72 2f 5b 41 2d 5a |_zone =~| tr/[A-Z|
|00001ba0| 5d 2f 5b 61 2d 7a 5d 2f | 3b 0a 58 20 20 20 20 24 |]/[a-z]/|;.X $|
|00001bb0| 7a 6f 6e 65 20 3d 7e 20 | 74 72 2f 5b 41 2d 5a 5d |zone =~ |tr/[A-Z]|
|00001bc0| 2f 5b 61 2d 7a 5d 2f 3b | 0a 58 0a 58 20 20 20 20 |/[a-z]/;|.X.X |
|00001bd0| 69 66 20 28 73 75 62 73 | 74 72 20 28 24 7a 6f 6e |if (subs|tr ($zon|
|00001be0| 65 2c 20 30 20 2d 20 6c | 65 6e 67 74 68 20 28 24 |e, 0 - l|ength ($|
|00001bf0| 70 61 72 65 6e 74 5f 7a | 6f 6e 65 29 29 20 6e 65 |parent_z|one)) ne|
|00001c00| 20 24 70 61 72 65 6e 74 | 5f 7a 6f 6e 65 29 20 7b | $parent|_zone) {|
|00001c10| 0a 58 09 72 65 74 75 72 | 6e 20 30 3b 0a 58 20 20 |.X.retur|n 0;.X |
|00001c20| 20 20 7d 0a 58 0a 58 20 | 20 20 20 72 65 74 75 72 | }.X.X | retur|
|00001c30| 6e 20 31 3b 0a 58 7d 0a | 58 0a 58 0a 58 23 23 23 |n 1;.X}.|X.X.X###|
|00001c40| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001c50| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001c60| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001c70| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00001c80| 23 23 23 23 23 23 23 23 | 23 23 23 0a 58 23 0a 58 |########|###.X#.X|
|00001c90| 73 75 62 20 61 78 66 72 | 20 7b 0a 58 20 20 20 20 |sub axfr| {.X |
|00001ca0| 6c 6f 63 61 6c 20 28 24 | 7a 6f 6e 65 29 20 3d 20 |local ($|zone) = |
|00001cb0| 73 68 69 66 74 20 28 40 | 5f 29 3b 0a 58 20 20 20 |shift (@|_);.X |
|00001cc0| 20 6c 6f 63 61 6c 20 28 | 24 73 65 72 76 65 72 29 | local (|$server)|
|00001cd0| 20 3d 20 73 68 69 66 74 | 20 28 40 5f 29 3b 0a 58 | = shift| (@_);.X|
|00001ce0| 0a 58 20 20 20 20 6c 6f | 63 61 6c 20 28 40 6f 75 |.X lo|cal (@ou|
|00001cf0| 74 70 75 74 29 3b 0a 58 | 20 20 20 20 6c 6f 63 61 |tput);.X| loca|
|00001d00| 6c 20 28 40 74 65 6d 70 | 29 3b 0a 58 20 20 20 20 |l (@temp|);.X |
|00001d10| 6c 6f 63 61 6c 20 28 24 | 5f 29 3b 0a 58 20 20 20 |local ($|_);.X |
|00001d20| 20 6c 6f 63 61 6c 20 28 | 24 63 6f 6e 74 29 3b 0a | local (|$cont);.|
|00001d30| 58 0a 58 20 20 20 20 40 | 6f 75 74 70 75 74 20 3d |X.X @|output =|
|00001d40| 20 73 70 6c 69 74 20 28 | 2f 5c 6e 2f 2c 20 60 64 | split (|/\n/, `d|
|00001d50| 69 67 20 40 24 73 65 72 | 76 65 72 20 61 78 66 72 |ig @$ser|ver axfr|
|00001d60| 20 24 7a 6f 6e 65 60 29 | 3b 0a 58 0a 58 20 20 20 | $zone`)|;.X.X |
|00001d70| 20 69 66 20 28 21 20 26 | 64 69 67 5f 63 68 65 63 | if (! &|dig_chec|
|00001d80| 6b 20 28 24 3f 2c 20 40 | 6f 75 74 70 75 74 29 29 |k ($?, @|output))|
|00001d90| 20 7b 0a 58 09 72 65 74 | 75 72 6e 20 28 29 3b 0a | {.X.ret|urn ();.|
|00001da0| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 23 0a |X }.X|.X #.|
|00001db0| 58 20 20 20 20 23 20 52 | 65 6d 6f 76 65 20 63 6f |X # R|emove co|
|00001dc0| 6d 6d 65 6e 74 73 20 61 | 6e 64 20 6e 65 77 6c 69 |mments a|nd newli|
|00001dd0| 6e 65 73 0a 58 20 20 20 | 20 23 0a 58 20 20 20 20 |nes.X | #.X |
|00001de0| 40 74 65 6d 70 20 3d 20 | 28 29 3b 0a 58 20 20 20 |@temp = |();.X |
|00001df0| 20 66 6f 72 65 61 63 68 | 20 28 40 6f 75 74 70 75 | foreach| (@outpu|
|00001e00| 74 29 20 7b 0a 58 09 73 | 2f 5c 73 2a 5c 6e 24 2f |t) {.X.s|/\s*\n$/|
|00001e10| 2f 3b 0a 58 09 73 2f 5c | 73 2a 3b 2e 2a 24 2f 2f |/;.X.s/\|s*;.*$//|
|00001e20| 3b 0a 58 09 69 66 20 28 | 21 20 2f 5e 5c 73 2a 24 |;.X.if (|! /^\s*$|
|00001e30| 2f 29 20 7b 0a 58 09 20 | 20 20 20 70 75 73 68 20 |/) {.X. | push |
|00001e40| 28 40 74 65 6d 70 2c 20 | 24 5f 29 3b 0a 58 09 7d |(@temp, |$_);.X.}|
|00001e50| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 23 |.X }.|X.X #|
|00001e60| 0a 58 20 20 20 20 23 20 | 43 6f 6c 6c 61 70 73 65 |.X # |Collapse|
|00001e70| 20 63 6f 6e 74 69 6e 75 | 61 74 69 6f 6e 73 0a 58 | continu|ations.X|
|00001e80| 20 20 20 20 23 0a 58 20 | 20 20 20 40 6f 75 74 70 | #.X | @outp|
|00001e90| 75 74 20 3d 20 28 29 3b | 0a 58 20 20 20 20 77 68 |ut = ();|.X wh|
|00001ea0| 69 6c 65 20 28 31 29 20 | 7b 0a 58 09 6c 61 73 74 |ile (1) |{.X.last|
|00001eb0| 20 69 66 20 28 21 20 40 | 74 65 6d 70 29 3b 0a 58 | if (! @|temp);.X|
|00001ec0| 09 24 5f 20 3d 20 73 68 | 69 66 74 20 28 40 74 65 |.$_ = sh|ift (@te|
|00001ed0| 6d 70 29 3b 0a 58 09 77 | 68 69 6c 65 20 28 2f 5c |mp);.X.w|hile (/\|
|00001ee0| 73 5c 28 24 2f 20 26 26 | 20 40 74 65 6d 70 29 20 |s\($/ &&| @temp) |
|00001ef0| 7b 0a 58 09 20 20 20 20 | 73 2f 5c 73 2a 5c 28 24 |{.X. |s/\s*\($|
|00001f00| 2f 2f 3b 0a 58 09 20 20 | 20 20 24 63 6f 6e 74 20 |//;.X. | $cont |
|00001f10| 3d 20 73 68 69 66 74 20 | 28 40 74 65 6d 70 29 3b |= shift |(@temp);|
|00001f20| 0a 58 09 20 20 20 20 69 | 66 20 28 24 63 6f 6e 74 |.X. i|f ($cont|
|00001f30| 20 3d 7e 20 2f 5c 29 24 | 2f 29 20 7b 0a 58 09 09 | =~ /\)$|/) {.X..|
|00001f40| 24 63 6f 6e 74 20 3d 7e | 20 73 2f 5c 73 2a 5c 29 |$cont =~| s/\s*\)|
|00001f50| 24 2f 2f 3b 0a 58 09 09 | 24 5f 20 3d 20 24 5f 20 |$//;.X..|$_ = $_ |
|00001f60| 2e 20 27 20 27 20 2e 20 | 24 63 6f 6e 74 3b 0a 58 |. ' ' . |$cont;.X|
|00001f70| 09 20 20 20 20 7d 20 65 | 6c 73 65 20 7b 0a 58 09 |. } e|lse {.X.|
|00001f80| 09 24 5f 20 3d 20 24 5f | 20 2e 20 27 20 27 20 2e |.$_ = $_| . ' ' .|
|00001f90| 20 24 63 6f 6e 74 20 2e | 20 27 20 28 27 3b 0a 58 | $cont .| ' (';.X|
|00001fa0| 09 20 20 20 20 7d 0a 58 | 09 7d 0a 58 09 70 75 73 |. }.X|.}.X.pus|
|00001fb0| 68 20 28 40 6f 75 74 70 | 75 74 2c 20 24 5f 29 3b |h (@outp|ut, $_);|
|00001fc0| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 72 |.X }.|X.X r|
|00001fd0| 65 74 75 72 6e 20 28 40 | 6f 75 74 70 75 74 29 3b |eturn (@|output);|
|00001fe0| 0a 58 7d 0a 58 0a 58 0a | 58 23 23 23 23 23 23 23 |.X}.X.X.|X#######|
|00001ff0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002000| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002010| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002020| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002030| 23 23 23 23 23 23 23 0a | 58 23 20 64 69 67 20 2d |#######.|X# dig -|
|00002040| 09 53 69 6d 70 6c 65 20 | 44 4e 53 20 6c 6f 6f 6b |.Simple |DNS look|
|00002050| 75 70 2c 20 75 73 69 6e | 67 20 64 69 67 28 31 29 |up, usin|g dig(1)|
|00002060| 2e 0a 58 23 0a 58 73 75 | 62 20 64 69 67 20 7b 0a |..X#.Xsu|b dig {.|
|00002070| 58 20 20 20 20 6c 6f 63 | 61 6c 20 28 24 6b 65 79 |X loc|al ($key|
|00002080| 29 20 3d 20 73 68 69 66 | 74 20 28 40 5f 29 3b 0a |) = shif|t (@_);.|
|00002090| 58 20 20 20 20 6c 6f 63 | 61 6c 20 28 24 74 79 70 |X loc|al ($typ|
|000020a0| 65 29 20 3d 20 73 68 69 | 66 74 20 28 40 5f 29 3b |e) = shi|ft (@_);|
|000020b0| 0a 58 20 20 20 20 6c 6f | 63 61 6c 20 28 24 73 65 |.X lo|cal ($se|
|000020c0| 72 76 65 72 29 20 3d 20 | 73 68 69 66 74 20 28 40 |rver) = |shift (@|
|000020d0| 5f 29 3b 0a 58 0a 58 20 | 20 20 20 6c 6f 63 61 6c |_);.X.X | local|
|000020e0| 20 28 40 6f 75 74 70 75 | 74 29 3b 0a 58 20 20 20 | (@outpu|t);.X |
|000020f0| 20 6c 6f 63 61 6c 20 28 | 24 5f 29 3b 0a 58 20 20 | local (|$_);.X |
|00002100| 20 20 6c 6f 63 61 6c 20 | 28 25 76 61 6c 75 65 73 | local |(%values|
|00002110| 29 3b 0a 58 20 20 20 20 | 6c 6f 63 61 6c 20 28 24 |);.X |local ($|
|00002120| 76 61 6c 75 65 29 3b 0a | 58 20 20 20 20 6c 6f 63 |value);.|X loc|
|00002130| 61 6c 20 28 40 46 29 3b | 0a 58 20 20 20 20 6c 6f |al (@F);|.X lo|
|00002140| 63 61 6c 20 28 40 72 65 | 74 29 3b 0a 58 20 20 20 |cal (@re|t);.X |
|00002150| 20 6c 6f 63 61 6c 20 28 | 24 73 74 61 74 75 73 29 | local (|$status)|
|00002160| 3b 0a 58 0a 58 20 20 20 | 20 23 0a 58 20 20 20 20 |;.X.X | #.X |
|00002170| 23 20 4b 65 79 20 6d 75 | 73 74 20 62 65 20 72 65 |# Key mu|st be re|
|00002180| 6c 61 74 69 76 65 20 74 | 6f 20 72 6f 6f 74 0a 58 |lative t|o root.X|
|00002190| 20 20 20 20 23 0a 58 20 | 20 20 20 69 66 20 28 73 | #.X | if (s|
|000021a0| 75 62 73 74 72 20 28 24 | 6b 65 79 2c 20 2d 31 29 |ubstr ($|key, -1)|
|000021b0| 20 6e 65 20 27 2e 27 29 | 20 7b 0a 58 09 24 6b 65 | ne '.')| {.X.$ke|
|000021c0| 79 20 2e 3d 20 27 2e 27 | 3b 0a 58 20 20 20 20 7d |y .= '.'|;.X }|
|000021d0| 0a 58 0a 58 20 20 20 20 | 69 66 20 28 6c 65 6e 67 |.X.X |if (leng|
|000021e0| 74 68 20 28 24 73 65 72 | 76 65 72 29 29 20 7b 0a |th ($ser|ver)) {.|
|000021f0| 58 20 20 20 20 20 20 20 | 20 40 6f 75 74 70 75 74 |X | @output|
|00002200| 20 3d 20 73 70 6c 69 74 | 20 28 2f 5c 6e 2f 2c 20 | = split| (/\n/, |
|00002210| 60 64 69 67 20 40 24 73 | 65 72 76 65 72 20 24 6b |`dig @$s|erver $k|
|00002220| 65 79 20 24 74 79 70 65 | 60 29 3b 0a 58 20 20 20 |ey $type|`);.X |
|00002230| 20 7d 20 65 6c 73 65 20 | 7b 0a 58 09 40 6f 75 74 | } else |{.X.@out|
|00002240| 70 75 74 20 3d 20 73 70 | 6c 69 74 20 28 2f 5c 6e |put = sp|lit (/\n|
|00002250| 2f 2c 20 60 64 69 67 20 | 24 6b 65 79 20 24 74 79 |/, `dig |$key $ty|
|00002260| 70 65 60 29 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |pe`);.X | }.X.X|
|00002270| 20 20 20 20 69 66 20 28 | 21 20 26 64 69 67 5f 63 | if (|! &dig_c|
|00002280| 68 65 63 6b 20 28 24 3f | 2c 20 40 6f 75 74 70 75 |heck ($?|, @outpu|
|00002290| 74 29 29 20 7b 0a 58 09 | 72 65 74 75 72 6e 20 28 |t)) {.X.|return (|
|000022a0| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |);.X |}.X.X |
|000022b0| 20 23 0a 58 20 20 20 20 | 23 20 46 69 6e 64 20 6d | #.X |# Find m|
|000022c0| 61 74 63 68 69 6e 67 20 | 64 61 74 61 0a 58 20 20 |atching |data.X |
|000022d0| 20 20 23 0a 58 20 20 20 | 20 75 6e 64 65 66 20 25 | #.X | undef %|
|000022e0| 76 61 6c 75 65 73 3b 0a | 58 20 20 20 20 66 6f 72 |values;.|X for|
|000022f0| 65 61 63 68 20 28 40 6f | 75 74 70 75 74 29 20 7b |each (@o|utput) {|
|00002300| 0a 58 09 6e 65 78 74 20 | 69 66 20 28 2f 5e 3b 2f |.X.next |if (/^;/|
|00002310| 29 3b 0a 58 09 6e 65 78 | 74 20 69 66 20 28 2f 5e |);.X.nex|t if (/^|
|00002320| 5c 73 2a 24 2f 29 3b 0a | 58 09 40 46 20 3d 20 73 |\s*$/);.|X.@F = s|
|00002330| 70 6c 69 74 3b 0a 58 09 | 6e 65 78 74 20 69 66 20 |plit;.X.|next if |
|00002340| 28 26 73 74 72 63 61 73 | 65 63 6d 70 20 28 24 74 |(&strcas|ecmp ($t|
|00002350| 79 70 65 2c 20 24 46 5b | 32 5d 29 20 21 3d 20 30 |ype, $F[|2]) != 0|
|00002360| 29 3b 0a 58 09 6e 65 78 | 74 20 69 66 20 28 26 73 |);.X.nex|t if (&s|
|00002370| 74 72 63 61 73 65 63 6d | 70 20 28 24 6b 65 79 2c |trcasecm|p ($key,|
|00002380| 20 24 46 5b 30 5d 29 20 | 21 3d 20 30 29 3b 0a 58 | $F[0]) |!= 0);.X|
|00002390| 09 73 68 69 66 74 20 28 | 40 46 29 3b 20 73 68 69 |.shift (|@F); shi|
|000023a0| 66 74 20 28 40 46 29 3b | 20 73 68 69 66 74 20 28 |ft (@F);| shift (|
|000023b0| 40 46 29 3b 0a 58 09 24 | 76 61 6c 75 65 20 3d 20 |@F);.X.$|value = |
|000023c0| 6a 6f 69 6e 20 28 27 20 | 27 2c 20 40 46 29 3b 0a |join (' |', @F);.|
|000023d0| 58 09 6e 65 78 74 20 69 | 66 20 28 24 76 61 6c 75 |X.next i|f ($valu|
|000023e0| 65 73 7b 24 76 61 6c 75 | 65 7d 29 3b 0a 58 09 24 |es{$valu|e});.X.$|
|000023f0| 76 61 6c 75 65 73 7b 24 | 76 61 6c 75 65 7d 20 3d |values{$|value} =|
|00002400| 20 31 3b 0a 58 09 70 75 | 73 68 20 28 40 72 65 74 | 1;.X.pu|sh (@ret|
|00002410| 2c 20 24 76 61 6c 75 65 | 29 3b 0a 58 20 20 20 20 |, $value|);.X |
|00002420| 7d 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 40 72 |}.X r|eturn @r|
|00002430| 65 74 3b 0a 58 7d 0a 58 | 0a 58 0a 58 23 23 23 23 |et;.X}.X|.X.X####|
|00002440| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002450| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002460| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002470| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002480| 23 23 23 23 23 23 23 23 | 23 23 0a 58 23 20 64 69 |########|##.X# di|
|00002490| 67 5f 63 68 65 63 6b 20 | 2d 09 43 68 65 63 6b 20 |g_check |-.Check |
|000024a0| 68 6f 77 20 64 69 67 28 | 31 29 20 77 65 6e 74 0a |how dig(|1) went.|
|000024b0| 58 23 0a 58 73 75 62 20 | 64 69 67 5f 63 68 65 63 |X#.Xsub |dig_chec|
|000024c0| 6b 20 7b 0a 58 20 20 20 | 20 6c 6f 63 61 6c 20 28 |k {.X | local (|
|000024d0| 24 73 74 61 74 75 73 29 | 20 3d 20 73 68 69 66 74 |$status)| = shift|
|000024e0| 20 28 40 5f 29 3b 0a 58 | 0a 58 20 20 20 20 6c 6f | (@_);.X|.X lo|
|000024f0| 63 61 6c 20 28 40 46 29 | 3b 0a 58 20 20 20 20 6c |cal (@F)|;.X l|
|00002500| 6f 63 61 6c 20 28 24 73 | 74 61 74 75 73 5f 74 65 |ocal ($s|tatus_te|
|00002510| 78 74 29 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |xt);.X.X| if (|
|00002520| 21 20 40 5f 29 20 7b 0a | 58 09 23 0a 58 09 23 20 |! @_) {.|X.#.X.# |
|00002530| 64 69 67 20 68 61 73 20 | 70 72 6f 62 61 62 6c 79 |dig has |probably|
|00002540| 20 6e 6f 74 20 65 78 65 | 63 75 74 65 64 0a 58 09 | not exe|cuted.X.|
|00002550| 23 0a 58 09 24 45 52 52 | 4f 52 5f 53 54 52 20 3d |#.X.$ERR|OR_STR =|
|00002560| 20 22 70 72 6f 62 6c 65 | 6d 20 72 75 6e 6e 69 6e | "proble|m runnin|
|00002570| 67 20 64 69 67 3f 22 3b | 0a 58 09 72 65 74 75 72 |g dig?";|.X.retur|
|00002580| 6e 20 28 29 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |n ();.X | }.X.X|
|00002590| 20 20 20 20 23 0a 58 20 | 20 20 20 23 20 47 65 74 | #.X | # Get|
|000025a0| 20 73 74 61 74 75 73 20 | 74 65 78 74 2c 20 72 65 | status |text, re|
|000025b0| 67 61 72 64 6c 65 73 73 | 20 6f 66 20 72 65 74 75 |gardless| of retu|
|000025c0| 72 6e 20 76 61 6c 75 65 | 0a 58 20 20 20 20 23 0a |rn value|.X #.|
|000025d0| 58 20 20 20 20 40 46 20 | 3d 20 67 72 65 70 20 28 |X @F |= grep (|
|000025e0| 2f 3b 3b 20 2d 3e 3e 48 | 45 41 44 45 52 3c 3c 2d |/;; ->>H|EADER<<-|
|000025f0| 2f 2c 20 40 5f 29 3b 0a | 58 20 20 20 20 69 66 20 |/, @_);.|X if |
|00002600| 28 40 46 29 20 7b 0a 58 | 09 69 66 20 28 24 46 5b |(@F) {.X|.if ($F[|
|00002610| 30 5d 20 3d 7e 20 2f 73 | 74 61 74 75 73 3a 20 28 |0] =~ /s|tatus: (|
|00002620| 5b 5e 2c 5d 2a 29 2c 2f | 29 20 7b 0a 58 09 20 20 |[^,]*),/|) {.X. |
|00002630| 20 20 24 73 74 61 74 75 | 73 5f 74 65 78 74 20 3d | $statu|s_text =|
|00002640| 20 24 31 3b 0a 58 09 7d | 0a 58 20 20 20 20 7d 0a | $1;.X.}|.X }.|
|00002650| 58 20 20 20 20 69 66 20 | 28 28 24 73 74 61 74 75 |X if |(($statu|
|00002660| 73 5f 74 65 78 74 20 65 | 71 20 22 52 45 46 55 53 |s_text e|q "REFUS|
|00002670| 45 44 22 29 20 7c 7c 20 | 28 24 73 74 61 74 75 73 |ED") || |($status|
|00002680| 5f 74 65 78 74 20 65 71 | 20 22 53 45 52 56 46 41 |_text eq| "SERVFA|
|00002690| 49 4c 22 29 29 20 7b 0a | 58 09 24 45 52 52 4f 52 |IL")) {.|X.$ERROR|
|000026a0| 5f 53 54 52 20 3d 20 22 | 64 69 67 3a 20 73 74 61 |_STR = "|dig: sta|
|000026b0| 74 75 73 3a 20 24 31 22 | 3b 0a 58 09 72 65 74 75 |tus: $1"|;.X.retu|
|000026c0| 72 6e 20 28 29 3b 0a 58 | 20 20 20 20 7d 0a 58 20 |rn ();.X| }.X |
|000026d0| 20 20 20 69 66 20 28 24 | 3f 20 21 3d 20 30 29 20 | if ($|? != 0) |
|000026e0| 7b 0a 58 09 24 45 52 52 | 4f 52 5f 53 54 52 20 3d |{.X.$ERR|OR_STR =|
|000026f0| 20 22 64 69 67 3a 20 65 | 72 72 6f 72 2c 20 72 65 | "dig: e|rror, re|
|00002700| 74 20 3d 20 22 20 2e 20 | 28 24 3f 20 3e 3e 20 38 |t = " . |($? >> 8|
|00002710| 29 20 2e 20 22 2c 20 73 | 74 61 74 75 73 20 3d 20 |) . ", s|tatus = |
|00002720| 24 73 74 61 74 75 73 22 | 3b 0a 58 09 72 65 74 75 |$status"|;.X.retu|
|00002730| 72 6e 20 28 29 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |rn ();.X| }.X.|
|00002740| 58 20 20 20 20 72 65 74 | 75 72 6e 20 31 3b 0a 58 |X ret|urn 1;.X|
|00002750| 7d 0a 58 0a 58 0a 58 23 | 23 23 23 23 23 23 23 23 |}.X.X.X#|########|
|00002760| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002770| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002780| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002790| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000027a0| 23 23 23 23 23 0a 58 23 | 20 73 74 72 63 61 73 65 |#####.X#| strcase|
|000027b0| 63 6d 70 20 2d 09 43 6f | 6d 70 61 72 65 20 73 74 |cmp -.Co|mpare st|
|000027c0| 72 69 6e 67 73 20 77 68 | 69 6c 65 20 69 67 6e 6f |rings wh|ile igno|
|000027d0| 72 69 6e 67 20 63 61 73 | 65 0a 58 23 0a 58 73 75 |ring cas|e.X#.Xsu|
|000027e0| 62 20 73 74 72 63 61 73 | 65 63 6d 70 20 7b 0a 58 |b strcas|ecmp {.X|
|000027f0| 20 20 20 20 6c 6f 63 61 | 6c 20 28 24 73 31 29 20 | loca|l ($s1) |
|00002800| 3d 20 73 68 69 66 74 20 | 28 40 5f 29 3b 0a 58 20 |= shift |(@_);.X |
|00002810| 20 20 20 6c 6f 63 61 6c | 20 28 24 73 32 29 20 3d | local| ($s2) =|
|00002820| 20 73 68 69 66 74 20 28 | 40 5f 29 3b 0a 58 0a 58 | shift (|@_);.X.X|
|00002830| 20 20 20 20 24 73 31 20 | 3d 7e 20 74 72 2f 5b 41 | $s1 |=~ tr/[A|
|00002840| 2d 5a 5d 2f 5b 61 2d 7a | 5d 2f 3b 0a 58 20 20 20 |-Z]/[a-z|]/;.X |
|00002850| 20 24 73 32 20 3d 7e 20 | 74 72 2f 5b 41 2d 5a 5d | $s2 =~ |tr/[A-Z]|
|00002860| 2f 5b 61 2d 7a 5d 2f 3b | 0a 58 0a 58 20 20 20 20 |/[a-z]/;|.X.X |
|00002870| 72 65 74 75 72 6e 20 28 | 24 73 31 20 63 6d 70 20 |return (|$s1 cmp |
|00002880| 24 73 32 29 3b 0a 58 7d | 0a 53 48 41 52 5f 45 4f |$s2);.X}|.SHAR_EO|
|00002890| 46 0a 24 54 4f 55 43 48 | 20 2d 61 6d 20 31 31 30 |F.$TOUCH| -am 110|
|000028a0| 32 31 36 31 38 39 34 20 | 64 6e 73 66 69 6e 64 2e |2161894 |dnsfind.|
|000028b0| 70 6c 20 26 26 0a 63 68 | 6d 6f 64 20 30 36 34 30 |pl &&.ch|mod 0640|
|000028c0| 20 64 6e 73 66 69 6e 64 | 2e 70 6c 20 7c 7c 0a 65 | dnsfind|.pl ||.e|
|000028d0| 63 68 6f 20 22 72 65 73 | 74 6f 72 65 20 6f 66 20 |cho "res|tore of |
|000028e0| 64 6e 73 66 69 6e 64 2e | 70 6c 20 66 61 69 6c 65 |dnsfind.|pl faile|
|000028f0| 64 22 0a 73 65 74 20 60 | 77 63 20 2d 63 20 64 6e |d".set `|wc -c dn|
|00002900| 73 66 69 6e 64 2e 70 6c | 60 3b 57 63 5f 63 3d 24 |sfind.pl|`;Wc_c=$|
|00002910| 31 0a 69 66 20 74 65 73 | 74 20 22 24 57 63 5f 63 |1.if tes|t "$Wc_c|
|00002920| 22 20 21 3d 20 22 36 36 | 38 30 22 3b 20 74 68 65 |" != "66|80"; the|
|00002930| 6e 0a 09 65 63 68 6f 20 | 6f 72 69 67 69 6e 61 6c |n..echo |original|
|00002940| 20 73 69 7a 65 20 36 36 | 38 30 2c 20 63 75 72 72 | size 66|80, curr|
|00002950| 65 6e 74 20 73 69 7a 65 | 20 24 57 63 5f 63 0a 66 |ent size| $Wc_c.f|
|00002960| 69 0a 23 20 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |i.# ====|========|
|00002970| 3d 20 66 69 6e 64 2d 6d | 78 20 3d 3d 3d 3d 3d 3d |= find-m|x ======|
|00002980| 3d 3d 3d 3d 3d 3d 3d 3d | 0a 65 63 68 6f 20 22 78 |========|.echo "x|
|00002990| 20 2d 20 65 78 74 72 61 | 63 74 69 6e 67 20 66 69 | - extra|cting fi|
|000029a0| 6e 64 2d 6d 78 20 28 54 | 65 78 74 29 22 0a 73 65 |nd-mx (T|ext)".se|
|000029b0| 64 20 27 73 2f 5e 58 2f | 2f 27 20 3c 3c 20 27 53 |d 's/^X/|/' << 'S|
|000029c0| 48 41 52 5f 45 4f 46 27 | 20 3e 20 66 69 6e 64 2d |HAR_EOF'| > find-|
|000029d0| 6d 78 20 26 26 0a 58 23 | 21 2f 75 73 72 2f 6c 6f |mx &&.X#|!/usr/lo|
|000029e0| 63 61 6c 2f 62 69 6e 2f | 70 65 72 6c 0a 58 23 20 |cal/bin/|perl.X# |
|000029f0| 66 69 6e 64 2d 6d 78 20 | 2d 09 46 69 6e 64 20 61 |find-mx |-.Find a|
|00002a00| 6c 6c 20 6e 61 6d 65 73 | 20 77 68 69 63 68 20 6c |ll names| which l|
|00002a10| 69 73 74 20 61 20 68 6f | 73 74 20 61 73 20 22 62 |ist a ho|st as "b|
|00002a20| 65 73 74 2d 4d 58 22 0a | 58 23 0a 58 23 20 24 49 |est-MX".|X#.X# $I|
|00002a30| 64 3a 20 64 6e 73 66 69 | 6e 64 2e 73 68 61 72 2c |d: dnsfi|nd.shar,|
|00002a40| 76 20 38 2e 32 20 31 39 | 39 36 2f 31 30 2f 32 35 |v 8.2 19|96/10/25|
|00002a50| 20 31 37 3a 30 37 3a 35 | 35 20 76 69 78 69 65 20 | 17:07:5|5 vixie |
|00002a60| 45 78 70 20 24 0a 58 23 | 20 24 53 6f 75 72 63 65 |Exp $.X#| $Source|
|00002a70| 3a 20 2f 70 72 6f 6a 2f | 73 72 63 2f 69 73 63 2f |: /proj/|src/isc/|
|00002a80| 63 76 73 2d 31 2f 62 69 | 6e 64 2f 63 6f 6e 74 72 |cvs-1/bi|nd/contr|
|00002a90| 69 62 2f 6d 69 73 63 2f | 64 6e 73 66 69 6e 64 2e |ib/misc/|dnsfind.|
|00002aa0| 73 68 61 72 2c 76 20 24 | 0a 58 23 0a 58 23 20 53 |shar,v $|.X#.X# S|
|00002ab0| 59 4e 4f 50 53 49 53 0a | 58 23 09 66 69 6e 64 2d |YNOPSIS.|X#.find-|
|00002ac0| 6d 78 20 68 75 62 20 64 | 6f 6d 61 69 6e 20 5b 2e |mx hub d|omain [.|
|00002ad0| 2e 2e 5d 0a 58 23 0a 58 | 0a 58 70 75 73 68 20 28 |..].X#.X|.Xpush (|
|00002ae0| 40 49 4e 43 2c 20 27 2f | 73 72 63 2f 75 74 69 6c |@INC, '/|src/util|
|00002af0| 2f 70 65 72 6c 27 29 3b | 0a 58 72 65 71 75 69 72 |/perl');|.Xrequir|
|00002b00| 65 20 27 64 6e 73 66 69 | 6e 64 2e 70 6c 27 3b 0a |e 'dnsfi|nd.pl';.|
|00002b10| 58 0a 58 24 50 72 6f 67 | 20 3d 20 22 66 69 6e 64 |X.X$Prog| = "find|
|00002b20| 2d 6d 78 22 3b 0a 58 0a | 58 69 66 20 28 24 23 41 |-mx";.X.|Xif ($#A|
|00002b30| 52 47 56 20 3c 3d 20 30 | 29 20 7b 0a 58 20 20 20 |RGV <= 0|) {.X |
|00002b40| 20 64 69 65 20 22 75 73 | 61 67 65 3a 20 24 50 72 | die "us|age: $Pr|
|00002b50| 6f 67 20 68 75 62 20 64 | 6f 6d 61 69 6e 20 5b 2e |og hub d|omain [.|
|00002b60| 2e 2e 5d 5c 6e 22 3b 0a | 58 7d 0a 58 0a 58 69 66 |..]\n";.|X}.X.Xif|
|00002b70| 20 28 21 20 26 6d 61 69 | 6e 20 28 40 41 52 47 56 | (! &mai|n (@ARGV|
|00002b80| 29 29 20 7b 0a 58 20 20 | 20 20 65 78 69 74 20 31 |)) {.X | exit 1|
|00002b90| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 23 23 23 23 23 23 |;.X}.X.X|.X######|
|00002ba0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002bb0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002bc0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002bd0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002be0| 23 23 23 23 23 23 23 0a | 58 23 20 4d 61 69 6e 20 |#######.|X# Main |
|00002bf0| 50 72 6f 67 72 61 6d 0a | 58 23 0a 58 73 75 62 20 |Program.|X#.Xsub |
|00002c00| 6d 61 69 6e 20 7b 0a 58 | 20 20 20 20 6c 6f 63 61 |main {.X| loca|
|00002c10| 6c 20 28 24 68 75 62 29 | 20 3d 20 73 68 69 66 74 |l ($hub)| = shift|
|00002c20| 20 28 40 5f 29 3b 0a 58 | 20 20 20 20 6c 6f 63 61 | (@_);.X| loca|
|00002c30| 6c 20 28 40 64 6f 6d 61 | 69 6e 73 29 20 3d 20 40 |l (@doma|ins) = @|
|00002c40| 5f 3b 0a 58 20 0a 58 20 | 20 20 20 26 64 6e 73 66 |_;.X .X | &dnsf|
|00002c50| 69 6e 64 20 28 40 64 6f | 6d 61 69 6e 73 29 3b 0a |ind (@do|mains);.|
|00002c60| 58 0a 58 20 20 20 20 75 | 6e 64 65 66 20 25 6d 78 |X.X u|ndef %mx|
|00002c70| 3b 0a 58 20 20 20 20 66 | 6f 72 65 61 63 68 20 24 |;.X f|oreach $|
|00002c80| 7a 6f 6e 65 20 28 6b 65 | 79 73 20 28 25 45 78 63 |zone (ke|ys (%Exc|
|00002c90| 68 61 6e 67 65 72 73 29 | 29 20 7b 0a 58 09 40 65 |hangers)|) {.X.@e|
|00002ca0| 78 63 68 61 6e 67 65 72 | 73 20 3d 20 73 70 6c 69 |xchanger|s = spli|
|00002cb0| 74 20 28 27 5c 7c 27 2c | 20 24 45 78 63 68 61 6e |t ('\|',| $Exchan|
|00002cc0| 67 65 72 73 7b 24 7a 6f | 6e 65 7d 29 3b 0a 58 0a |gers{$zo|ne});.X.|
|00002cd0| 58 09 23 0a 58 09 23 20 | 49 66 20 68 75 62 20 69 |X.#.X.# |If hub i|
|00002ce0| 73 20 6f 6e 65 20 6f 66 | 20 74 68 65 20 6d 6f 73 |s one of| the mos|
|00002cf0| 74 20 70 72 65 66 65 72 | 72 65 64 20 4d 58 20 66 |t prefer|red MX f|
|00002d00| 6f 72 20 74 68 69 73 20 | 7a 6f 6e 65 2c 20 74 68 |or this |zone, th|
|00002d10| 65 6e 0a 58 09 23 20 73 | 61 76 65 20 69 74 0a 58 |en.X.# s|ave it.X|
|00002d20| 09 23 0a 58 09 69 66 20 | 28 67 72 65 70 20 28 24 |.#.X.if |(grep ($|
|00002d30| 5f 20 65 71 20 24 68 75 | 62 2c 20 40 65 78 63 68 |_ eq $hu|b, @exch|
|00002d40| 61 6e 67 65 72 73 29 29 | 20 7b 0a 58 09 20 20 20 |angers))| {.X. |
|00002d50| 20 24 6d 78 7b 24 7a 6f | 6e 65 7d 20 3d 20 31 3b | $mx{$zo|ne} = 1;|
|00002d60| 0a 58 09 7d 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |.X.}.X | }.X.X |
|00002d70| 20 20 20 23 0a 58 20 20 | 20 20 23 20 43 68 65 63 | #.X | # Chec|
|00002d80| 6b 20 69 66 20 61 6e 79 | 20 43 4e 41 4d 45 73 20 |k if any| CNAMEs |
|00002d90| 70 6f 69 6e 74 20 74 6f | 20 61 6e 20 4d 58 20 77 |point to| an MX w|
|00002da0| 65 20 68 61 76 65 20 73 | 65 6c 65 63 74 65 64 0a |e have s|elected.|
|00002db0| 58 20 20 20 20 23 0a 58 | 20 20 20 20 77 68 69 6c |X #.X| whil|
|00002dc0| 65 20 28 31 29 20 7b 0a | 58 09 28 24 6b 65 79 2c |e (1) {.|X.($key,|
|00002dd0| 20 24 76 61 6c 75 65 29 | 20 3d 20 65 61 63 68 20 | $value)| = each |
|00002de0| 28 25 43 6e 61 6d 65 73 | 29 3b 0a 58 09 6c 61 73 |(%Cnames|);.X.las|
|00002df0| 74 20 69 66 20 28 21 20 | 6c 65 6e 67 74 68 20 28 |t if (! |length (|
|00002e00| 24 6b 65 79 29 29 3b 0a | 58 0a 58 09 69 66 20 28 |$key));.|X.X.if (|
|00002e10| 24 6d 78 7b 24 76 61 6c | 75 65 7d 29 20 7b 0a 58 |$mx{$val|ue}) {.X|
|00002e20| 09 20 20 20 20 24 6d 78 | 7b 24 6b 65 79 7d 20 3d |. $mx|{$key} =|
|00002e30| 20 31 3b 0a 58 09 7d 0a | 58 20 20 20 20 7d 0a 58 | 1;.X.}.|X }.X|
|00002e40| 20 20 20 20 0a 58 0a 58 | 20 20 20 20 23 0a 58 20 | .X.X| #.X |
|00002e50| 20 20 20 23 20 43 75 73 | 74 6f 6d 20 73 6f 72 74 | # Cus|tom sort|
|00002e60| 20 6f 75 72 20 6f 75 74 | 70 75 74 0a 58 20 20 20 | our out|put.X |
|00002e70| 20 23 0a 58 20 20 20 20 | 40 6d 78 20 3d 20 73 6f | #.X |@mx = so|
|00002e80| 72 74 20 28 63 75 73 74 | 6f 6d 5f 73 6f 72 74 20 |rt (cust|om_sort |
|00002e90| 6b 65 79 73 20 28 25 6d | 78 29 29 3b 0a 58 0a 58 |keys (%m|x));.X.X|
|00002ea0| 20 20 20 20 23 0a 58 20 | 20 20 20 23 20 50 72 69 | #.X | # Pri|
|00002eb0| 6e 74 20 69 74 0a 58 20 | 20 20 20 23 0a 58 20 20 |nt it.X | #.X |
|00002ec0| 20 20 66 6f 72 65 61 63 | 68 20 24 7a 6f 6e 65 20 | foreac|h $zone |
|00002ed0| 28 40 6d 78 29 20 7b 0a | 58 09 70 72 69 6e 74 20 |(@mx) {.|X.print |
|00002ee0| 28 24 7a 6f 6e 65 2c 20 | 22 5c 6e 22 29 3b 0a 58 |($zone, |"\n");.X|
|00002ef0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 72 65 74 | }.X.|X ret|
|00002f00| 75 72 6e 20 31 3b 0a 58 | 7d 0a 58 0a 58 0a 58 23 |urn 1;.X|}.X.X.X#|
|00002f10| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002f20| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002f30| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002f40| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00002f50| 23 23 23 23 23 23 23 23 | 23 23 23 23 0a 58 23 20 |########|####.X# |
|00002f60| 64 6e 73 77 61 6e 74 65 | 64 20 2d 09 43 61 6c 6c |dnswante|d -.Call|
|00002f70| 65 64 20 66 6f 72 20 65 | 61 63 68 20 72 65 63 6f |ed for e|ach reco|
|00002f80| 72 64 20 66 6f 75 6e 64 | 20 62 79 20 64 6e 73 66 |rd found| by dnsf|
|00002f90| 69 6e 64 0a 58 23 0a 58 | 73 75 62 20 64 6e 73 77 |ind.X#.X|sub dnsw|
|00002fa0| 61 6e 74 65 64 20 7b 0a | 58 20 20 20 20 6c 6f 63 |anted {.|X loc|
|00002fb0| 61 6c 20 28 24 70 72 65 | 66 2c 20 24 65 78 63 68 |al ($pre|f, $exch|
|00002fc0| 61 6e 67 65 72 29 3b 0a | 58 20 20 20 20 6c 6f 63 |anger);.|X loc|
|00002fd0| 61 6c 20 28 24 7a 6f 6e | 65 5f 63 29 3b 0a 58 0a |al ($zon|e_c);.X.|
|00002fe0| 58 20 20 20 20 24 74 79 | 70 65 20 3d 7e 20 74 72 |X $ty|pe =~ tr|
|00002ff0| 2f 5b 61 2d 7a 5d 2f 5b | 41 2d 5a 5d 2f 3b 0a 58 |/[a-z]/[|A-Z]/;.X|
|00003000| 0a 58 20 20 20 20 69 66 | 20 28 24 74 79 70 65 20 |.X if| ($type |
|00003010| 65 71 20 27 4d 58 27 29 | 20 7b 0a 58 09 6c 6f 63 |eq 'MX')| {.X.loc|
|00003020| 61 6c 20 28 24 70 72 65 | 66 29 3b 0a 58 09 6c 6f |al ($pre|f);.X.lo|
|00003030| 63 61 6c 20 28 24 65 78 | 63 68 61 6e 67 65 72 29 |cal ($ex|changer)|
|00003040| 3b 0a 58 0a 58 09 28 24 | 70 72 65 66 2c 20 24 65 |;.X.X.($|pref, $e|
|00003050| 78 63 68 61 6e 67 65 72 | 29 20 3d 20 73 70 6c 69 |xchanger|) = spli|
|00003060| 74 20 28 27 5c 73 2b 27 | 2c 20 24 76 61 6c 75 65 |t ('\s+'|, $value|
|00003070| 29 3b 0a 58 09 24 7a 6f | 6e 65 20 3d 20 26 63 6c |);.X.$zo|ne = &cl|
|00003080| 65 61 6e 68 6f 73 74 20 | 28 24 7a 6f 6e 65 29 3b |eanhost |($zone);|
|00003090| 0a 58 09 24 65 78 63 68 | 61 6e 67 65 72 20 3d 20 |.X.$exch|anger = |
|000030a0| 26 63 6c 65 61 6e 68 6f | 73 74 20 28 24 65 78 63 |&cleanho|st ($exc|
|000030b0| 68 61 6e 67 65 72 29 3b | 0a 58 0a 58 09 69 66 20 |hanger);|.X.X.if |
|000030c0| 28 64 65 66 69 6e 65 64 | 20 28 24 4c 6f 77 65 73 |(defined| ($Lowes|
|000030d0| 74 5f 70 72 65 66 7b 24 | 7a 6f 6e 65 7d 29 29 20 |t_pref{$|zone})) |
|000030e0| 7b 0a 58 09 20 20 20 20 | 69 66 20 28 24 70 72 65 |{.X. |if ($pre|
|000030f0| 66 20 3d 3d 20 24 4c 6f | 77 65 73 74 5f 70 72 65 |f == $Lo|west_pre|
|00003100| 66 7b 24 7a 6f 6e 65 7d | 29 20 7b 0a 58 09 09 24 |f{$zone}|) {.X..$|
|00003110| 45 78 63 68 61 6e 67 65 | 72 73 7b 24 7a 6f 6e 65 |Exchange|rs{$zone|
|00003120| 7d 20 3d 20 24 45 78 63 | 68 61 6e 67 65 72 73 7b |} = $Exc|hangers{|
|00003130| 24 7a 6f 6e 65 7d 20 2e | 20 27 7c 27 20 2e 0a 58 |$zone} .| '|' ..X|
|00003140| 09 09 20 20 20 20 24 65 | 78 63 68 61 6e 67 65 72 |.. $e|xchanger|
|00003150| 3b 0a 58 09 20 20 20 20 | 7d 20 65 6c 73 65 20 7b |;.X. |} else {|
|00003160| 0a 58 09 09 69 66 20 28 | 24 70 72 65 66 20 3c 20 |.X..if (|$pref < |
|00003170| 24 4c 6f 77 65 73 74 5f | 70 72 65 66 7b 24 7a 6f |$Lowest_|pref{$zo|
|00003180| 6e 65 7d 29 20 7b 0a 58 | 09 09 20 20 20 20 24 4c |ne}) {.X|.. $L|
|00003190| 6f 77 65 73 74 5f 70 72 | 65 66 7b 24 7a 6f 6e 65 |owest_pr|ef{$zone|
|000031a0| 7d 20 3d 20 24 70 72 65 | 66 3b 0a 58 09 09 20 20 |} = $pre|f;.X.. |
|000031b0| 20 20 24 45 78 63 68 61 | 6e 67 65 72 73 7b 24 7a | $Excha|ngers{$z|
|000031c0| 6f 6e 65 7d 20 3d 20 24 | 65 78 63 68 61 6e 67 65 |one} = $|exchange|
|000031d0| 72 3b 0a 58 09 09 7d 0a | 58 09 20 20 20 20 7d 0a |r;.X..}.|X. }.|
|000031e0| 58 09 7d 20 65 6c 73 65 | 20 7b 0a 58 09 20 20 20 |X.} else| {.X. |
|000031f0| 20 24 4c 6f 77 65 73 74 | 5f 70 72 65 66 7b 24 7a | $Lowest|_pref{$z|
|00003200| 6f 6e 65 7d 20 3d 20 24 | 70 72 65 66 3b 0a 58 09 |one} = $|pref;.X.|
|00003210| 20 20 20 20 24 45 78 63 | 68 61 6e 67 65 72 73 7b | $Exc|hangers{|
|00003220| 24 7a 6f 6e 65 7d 20 3d | 20 24 65 78 63 68 61 6e |$zone} =| $exchan|
|00003230| 67 65 72 3b 0a 58 09 7d | 0a 58 20 20 20 20 7d 20 |ger;.X.}|.X } |
|00003240| 65 6c 73 69 66 20 28 24 | 74 79 70 65 20 65 71 20 |elsif ($|type eq |
|00003250| 27 43 4e 41 4d 45 27 29 | 20 7b 0a 58 20 20 20 20 |'CNAME')| {.X |
|00003260| 09 23 0a 58 20 20 20 20 | 09 23 20 53 61 76 65 20 |.#.X |.# Save |
|00003270| 74 68 69 73 2c 20 69 6e | 20 63 61 73 65 20 69 74 |this, in| case it|
|00003280| 20 70 6f 69 6e 74 73 20 | 74 6f 20 61 20 73 65 6c | points |to a sel|
|00003290| 65 63 74 65 64 20 4d 58 | 0a 58 20 20 20 20 09 23 |ected MX|.X .#|
|000032a0| 0a 58 20 20 20 20 09 24 | 7a 6f 6e 65 5f 63 20 3d |.X .$|zone_c =|
|000032b0| 20 26 63 6c 65 61 6e 68 | 6f 73 74 20 28 24 7a 6f | &cleanh|ost ($zo|
|000032c0| 6e 65 29 3b 0a 58 20 20 | 20 20 09 24 43 6e 61 6d |ne);.X | .$Cnam|
|000032d0| 65 73 7b 24 7a 6f 6e 65 | 5f 63 7d 20 3d 20 26 63 |es{$zone|_c} = &c|
|000032e0| 6c 65 61 6e 68 6f 73 74 | 20 28 24 76 61 6c 75 65 |leanhost| ($value|
|000032f0| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 7d 0a 58 0a 58 |);.X |}.X}.X.X|
|00003300| 0a 58 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |.X######|########|
|00003310| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003320| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003330| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003340| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 0a |########|#######.|
|00003350| 58 23 20 63 75 73 74 6f | 6d 5f 73 6f 72 74 20 2d |X# custo|m_sort -|
|00003360| 09 53 6f 72 74 73 20 64 | 6f 6d 61 69 6e 20 6e 61 |.Sorts d|omain na|
|00003370| 6d 65 73 20 62 79 20 6e | 75 6d 62 65 72 20 6f 66 |mes by n|umber of|
|00003380| 20 70 61 72 74 73 20 69 | 6e 20 6e 61 6d 65 20 74 | parts i|n name t|
|00003390| 68 65 6e 20 61 6c 70 68 | 61 6e 75 6d 0a 58 23 0a |hen alph|anum.X#.|
|000033a0| 58 73 75 62 20 63 75 73 | 74 6f 6d 5f 73 6f 72 74 |Xsub cus|tom_sort|
|000033b0| 20 7b 0a 58 20 20 20 20 | 6c 6f 63 61 6c 20 28 24 | {.X |local ($|
|000033c0| 64 6f 74 73 5f 61 29 3b | 0a 58 20 20 20 20 6c 6f |dots_a);|.X lo|
|000033d0| 63 61 6c 20 28 24 64 6f | 74 73 5f 62 29 3b 0a 58 |cal ($do|ts_b);.X|
|000033e0| 20 20 20 20 6c 6f 63 61 | 6c 20 28 24 63 6d 70 29 | loca|l ($cmp)|
|000033f0| 3b 0a 58 0a 58 20 20 20 | 20 24 64 6f 74 73 5f 61 |;.X.X | $dots_a|
|00003400| 20 3d 20 24 61 3b 20 24 | 64 6f 74 73 5f 61 20 3d | = $a; $|dots_a =|
|00003410| 7e 20 74 72 2f 2e 2f 2f | 64 63 3b 0a 58 20 20 20 |~ tr/.//|dc;.X |
|00003420| 20 24 64 6f 74 73 5f 62 | 20 3d 20 24 62 3b 20 24 | $dots_b| = $b; $|
|00003430| 64 6f 74 73 5f 62 20 3d | 7e 20 74 72 2f 2e 2f 2f |dots_b =|~ tr/.//|
|00003440| 64 63 3b 0a 58 0a 58 20 | 20 20 20 24 63 6d 70 20 |dc;.X.X | $cmp |
|00003450| 3d 20 24 64 6f 74 73 5f | 61 20 63 6d 70 20 24 64 |= $dots_|a cmp $d|
|00003460| 6f 74 73 5f 62 3b 0a 58 | 20 20 20 20 69 66 20 28 |ots_b;.X| if (|
|00003470| 24 63 6d 70 20 3d 3d 20 | 30 29 20 7b 0a 58 09 24 |$cmp == |0) {.X.$|
|00003480| 63 6d 70 20 3d 20 24 61 | 20 63 6d 70 20 24 62 3b |cmp = $a| cmp $b;|
|00003490| 0a 58 20 20 20 20 7d 0a | 58 20 20 20 20 72 65 74 |.X }.|X ret|
|000034a0| 75 72 6e 20 24 63 6d 70 | 3b 0a 58 7d 0a 58 0a 58 |urn $cmp|;.X}.X.X|
|000034b0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000034c0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000034d0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000034e0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000034f0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 0a 58 23 |########|#####.X#|
|00003500| 20 63 6c 65 61 6e 68 6f | 73 74 20 2d 09 46 6f 6c | cleanho|st -.Fol|
|00003510| 64 20 63 61 73 65 20 74 | 6f 20 6c 6f 77 65 72 20 |d case t|o lower |
|00003520| 61 6e 64 20 72 65 6d 6f | 76 65 20 74 72 61 69 6c |and remo|ve trail|
|00003530| 69 6e 67 20 64 6f 74 20 | 69 66 20 70 72 65 73 65 |ing dot |if prese|
|00003540| 6e 74 0a 58 23 0a 58 73 | 75 62 20 63 6c 65 61 6e |nt.X#.Xs|ub clean|
|00003550| 68 6f 73 74 20 7b 0a 58 | 20 20 20 20 6c 6f 63 61 |host {.X| loca|
|00003560| 6c 20 28 24 68 6f 73 74 | 29 20 3d 20 73 68 69 66 |l ($host|) = shif|
|00003570| 74 20 28 40 5f 29 3b 0a | 58 0a 58 20 20 20 20 24 |t (@_);.|X.X $|
|00003580| 68 6f 73 74 20 3d 7e 20 | 74 72 2f 5b 41 2d 5a 5d |host =~ |tr/[A-Z]|
|00003590| 2f 5b 61 2d 7a 5d 2f 3b | 0a 58 20 20 20 20 24 68 |/[a-z]/;|.X $h|
|000035a0| 6f 73 74 20 3d 7e 20 73 | 2f 5c 2e 24 2f 2f 3b 0a |ost =~ s|/\.$//;.|
|000035b0| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 24 68 6f |X ret|urn ($ho|
|000035c0| 73 74 29 3b 0a 58 7d 0a | 53 48 41 52 5f 45 4f 46 |st);.X}.|SHAR_EOF|
|000035d0| 0a 24 54 4f 55 43 48 20 | 2d 61 6d 20 31 31 30 32 |.$TOUCH |-am 1102|
|000035e0| 31 36 33 35 39 34 20 66 | 69 6e 64 2d 6d 78 20 26 |163594 f|ind-mx &|
|000035f0| 26 0a 63 68 6d 6f 64 20 | 30 37 35 30 20 66 69 6e |&.chmod |0750 fin|
|00003600| 64 2d 6d 78 20 7c 7c 0a | 65 63 68 6f 20 22 72 65 |d-mx ||.|echo "re|
|00003610| 73 74 6f 72 65 20 6f 66 | 20 66 69 6e 64 2d 6d 78 |store of| find-mx|
|00003620| 20 66 61 69 6c 65 64 22 | 0a 73 65 74 20 60 77 63 | failed"|.set `wc|
|00003630| 20 2d 63 20 66 69 6e 64 | 2d 6d 78 60 3b 57 63 5f | -c find|-mx`;Wc_|
|00003640| 63 3d 24 31 0a 69 66 20 | 74 65 73 74 20 22 24 57 |c=$1.if |test "$W|
|00003650| 63 5f 63 22 20 21 3d 20 | 22 32 39 30 30 22 3b 20 |c_c" != |"2900"; |
|00003660| 74 68 65 6e 0a 09 65 63 | 68 6f 20 6f 72 69 67 69 |then..ec|ho origi|
|00003670| 6e 61 6c 20 73 69 7a 65 | 20 32 39 30 30 2c 20 63 |nal size| 2900, c|
|00003680| 75 72 72 65 6e 74 20 73 | 69 7a 65 20 24 57 63 5f |urrent s|ize $Wc_|
|00003690| 63 0a 66 69 0a 23 20 3d | 3d 3d 3d 3d 3d 3d 3d 3d |c.fi.# =|========|
|000036a0| 3d 3d 3d 3d 20 6d 61 6b | 65 68 6f 73 74 73 20 3d |==== mak|ehosts =|
|000036b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 0a 65 63 |========|=====.ec|
|000036c0| 68 6f 20 22 78 20 2d 20 | 65 78 74 72 61 63 74 69 |ho "x - |extracti|
|000036d0| 6e 67 20 6d 61 6b 65 68 | 6f 73 74 73 20 28 54 65 |ng makeh|osts (Te|
|000036e0| 78 74 29 22 0a 73 65 64 | 20 27 73 2f 5e 58 2f 2f |xt)".sed| 's/^X//|
|000036f0| 27 20 3c 3c 20 27 53 48 | 41 52 5f 45 4f 46 27 20 |' << 'SH|AR_EOF' |
|00003700| 3e 20 6d 61 6b 65 68 6f | 73 74 73 20 26 26 0a 58 |> makeho|sts &&.X|
|00003710| 23 21 2f 75 73 72 2f 6c | 6f 63 61 6c 2f 62 69 6e |#!/usr/l|ocal/bin|
|00003720| 2f 70 65 72 6c 0a 58 23 | 20 6d 61 6b 65 68 6f 73 |/perl.X#| makehos|
|00003730| 74 73 20 2d 09 4d 61 6b | 65 20 61 20 2f 65 74 63 |ts -.Mak|e a /etc|
|00003740| 2f 68 6f 73 74 73 20 66 | 69 6c 65 20 62 79 20 73 |/hosts f|ile by s|
|00003750| 65 61 72 63 68 69 6e 67 | 20 44 4e 53 20 72 65 63 |earching| DNS rec|
|00003760| 6f 72 64 73 0a 58 23 0a | 58 23 20 24 49 64 3a 20 |ords.X#.|X# $Id: |
|00003770| 64 6e 73 66 69 6e 64 2e | 73 68 61 72 2c 76 20 38 |dnsfind.|shar,v 8|
|00003780| 2e 32 20 31 39 39 36 2f | 31 30 2f 32 35 20 31 37 |.2 1996/|10/25 17|
|00003790| 3a 30 37 3a 35 35 20 76 | 69 78 69 65 20 45 78 70 |:07:55 v|ixie Exp|
|000037a0| 20 24 0a 58 23 0a 58 23 | 20 53 59 4e 4f 50 53 49 | $.X#.X#| SYNOPSI|
|000037b0| 53 0a 58 23 09 6d 61 6b | 65 68 6f 73 74 73 20 64 |S.X#.mak|ehosts d|
|000037c0| 6f 6d 61 69 6e 20 2e 2e | 2e 0a 58 23 0a 58 23 20 |omain ..|..X#.X# |
|000037d0| 44 45 53 43 52 49 50 54 | 49 4f 4e 0a 58 23 09 54 |DESCRIPT|ION.X#.T|
|000037e0| 68 69 73 20 70 72 6f 67 | 72 61 6d 20 77 6f 72 6b |his prog|ram work|
|000037f0| 73 20 62 79 20 75 73 69 | 6e 67 20 64 6e 73 66 69 |s by usi|ng dnsfi|
|00003800| 6e 64 28 29 20 74 6f 20 | 72 65 63 75 72 73 69 76 |nd() to |recursiv|
|00003810| 65 6c 79 20 73 65 61 72 | 63 68 0a 58 23 09 74 68 |ely sear|ch.X#.th|
|00003820| 65 20 64 65 73 69 72 65 | 64 20 64 6f 6d 61 69 6e |e desire|d domain|
|00003830| 28 73 29 20 66 6f 72 20 | 61 6c 6c 20 41 2c 20 43 |(s) for |all A, C|
|00003840| 4e 41 4d 45 20 61 6e 64 | 20 50 54 52 20 72 65 63 |NAME and| PTR rec|
|00003850| 6f 72 64 73 2e 0a 58 23 | 09 54 68 65 20 6f 75 74 |ords..X#|.The out|
|00003860| 70 75 74 20 69 73 20 73 | 6f 72 74 65 64 20 62 79 |put is s|orted by|
|00003870| 20 49 50 2d 6e 75 6d 62 | 65 72 2c 20 61 6e 64 20 | IP-numb|er, and |
|00003880| 69 74 20 69 73 20 65 6e | 73 75 72 65 64 20 74 68 |it is en|sured th|
|00003890| 61 74 20 61 6e 79 0a 58 | 23 09 49 50 20 61 64 64 |at any.X|#.IP add|
|000038a0| 72 65 73 73 20 77 69 6c | 6c 20 62 65 20 74 72 61 |ress wil|l be tra|
|000038b0| 6e 73 6c 61 74 65 64 20 | 74 6f 20 74 68 65 20 6e |nslated |to the n|
|000038c0| 61 6d 65 20 6d 65 6e 74 | 69 6f 6e 65 64 20 62 79 |ame ment|ioned by|
|000038d0| 20 69 74 73 20 50 54 52 | 0a 58 23 09 72 65 63 6f | its PTR|.X#.reco|
|000038e0| 72 64 2c 20 69 66 20 6d | 6f 72 65 20 74 68 61 6e |rd, if m|ore than|
|000038f0| 20 6f 6e 65 20 6e 61 6d | 65 20 63 6f 72 72 65 73 | one nam|e corres|
|00003900| 70 6f 6e 64 73 20 74 6f | 20 74 68 65 20 73 61 6d |ponds to| the sam|
|00003910| 65 20 61 64 64 72 65 73 | 73 2e 0a 58 23 0a 58 23 |e addres|s..X#.X#|
|00003920| 09 4e 6f 74 65 20 74 68 | 61 74 20 74 68 65 20 6e |.Note th|at the n|
|00003930| 65 63 65 73 73 61 72 79 | 20 50 54 52 20 72 65 63 |ecessary| PTR rec|
|00003940| 6f 72 64 73 20 6d 75 73 | 74 20 62 65 20 70 72 6f |ords mus|t be pro|
|00003950| 76 69 64 65 64 20 62 79 | 20 6d 61 6b 69 6e 67 0a |vided by| making.|
|00003960| 58 23 09 6d 61 6b 65 68 | 6f 73 74 73 20 73 65 61 |X#.makeh|osts sea|
|00003970| 72 63 68 20 69 6e 20 74 | 68 65 20 61 70 70 72 6f |rch in t|he appro|
|00003980| 70 72 69 61 74 65 20 22 | 49 4e 2d 41 44 44 52 2e |priate "|IN-ADDR.|
|00003990| 41 52 50 41 22 20 73 75 | 62 64 6f 6d 61 69 6e 73 |ARPA" su|bdomains|
|000039a0| 2e 0a 58 23 0a 58 23 09 | 46 6f 72 20 65 78 61 6d |..X#.X#.|For exam|
|000039b0| 70 6c 65 2c 20 69 66 20 | 79 6f 75 20 77 61 6e 74 |ple, if |you want|
|000039c0| 20 61 20 68 6f 73 74 73 | 20 66 69 6c 65 20 66 6f | a hosts| file fo|
|000039d0| 72 20 74 68 65 20 64 6f | 6d 61 69 6e 0a 58 23 09 |r the do|main.X#.|
|000039e0| 22 64 65 61 6b 69 6e 2e | 65 64 75 2e 61 75 22 2c |"deakin.|edu.au",|
|000039f0| 20 79 6f 75 20 6e 65 65 | 64 20 74 6f 20 73 70 65 | you nee|d to spe|
|00003a00| 63 69 66 79 20 74 68 61 | 74 20 64 6f 6d 61 69 6e |cify tha|t domain|
|00003a10| 2c 20 70 6c 75 73 20 74 | 68 65 0a 58 23 09 72 65 |, plus t|he.X#.re|
|00003a20| 76 65 72 73 65 20 64 6f | 6d 61 69 6e 73 20 66 6f |verse do|mains fo|
|00003a30| 72 20 61 6e 79 20 61 64 | 64 72 65 73 73 65 73 20 |r any ad|dresses |
|00003a40| 63 6f 72 72 65 73 70 6f | 6e 64 69 6e 67 20 74 6f |correspo|nding to|
|00003a50| 20 68 6f 73 74 73 20 69 | 6e 0a 58 23 09 22 64 65 | hosts i|n.X#."de|
|00003a60| 61 6b 69 6e 2e 65 64 75 | 2e 61 75 22 2e 20 20 59 |akin.edu|.au". Y|
|00003a70| 6f 75 20 77 6f 75 6c 64 | 20 6e 65 65 64 20 74 6f |ou would| need to|
|00003a80| 20 73 61 79 3a 0a 58 23 | 0a 58 23 09 20 20 20 6d | say:.X#|.X#. m|
|00003a90| 61 6b 65 68 6f 73 74 73 | 20 5c 0a 58 23 09 09 64 |akehosts| \.X#..d|
|00003aa0| 65 61 6b 69 6e 2e 65 64 | 75 2e 61 75 20 5c 0a 58 |eakin.ed|u.au \.X|
|00003ab0| 23 09 09 31 38 34 2e 31 | 32 38 2e 69 6e 2d 61 64 |#..184.1|28.in-ad|
|00003ac0| 64 72 2e 61 72 70 61 20 | 5c 0a 58 23 09 09 31 33 |dr.arpa |\.X#..13|
|00003ad0| 32 2e 31 33 39 2e 69 6e | 2d 61 64 64 72 2e 61 72 |2.139.in|-addr.ar|
|00003ae0| 70 61 0a 58 0a 58 0a 58 | 70 75 73 68 20 28 40 49 |pa.X.X.X|push (@I|
|00003af0| 4e 43 2c 20 27 2f 73 72 | 63 2f 63 6f 6e 66 69 67 |NC, '/sr|c/config|
|00003b00| 2f 75 74 69 6c 2f 70 65 | 72 6c 27 29 3b 0a 58 0a |/util/pe|rl');.X.|
|00003b10| 58 72 65 71 75 69 72 65 | 20 27 64 6e 73 66 69 6e |Xrequire| 'dnsfin|
|00003b20| 64 2e 70 6c 27 3b 0a 58 | 0a 58 24 50 72 6f 67 20 |d.pl';.X|.X$Prog |
|00003b30| 3d 20 73 75 62 73 74 72 | 20 28 24 30 2c 20 72 69 |= substr| ($0, ri|
|00003b40| 6e 64 65 78 20 28 24 30 | 2c 20 27 2f 27 29 20 2b |ndex ($0|, '/') +|
|00003b50| 20 31 29 3b 0a 58 0a 58 | 24 56 65 72 73 69 6f 6e | 1);.X.X|$Version|
|00003b60| 20 3d 20 27 24 52 65 76 | 69 73 69 6f 6e 3a 20 38 | = '$Rev|ision: 8|
|00003b70| 2e 32 20 24 27 3b 0a 58 | 40 46 20 3d 20 73 70 6c |.2 $';.X|@F = spl|
|00003b80| 69 74 20 28 2f 5c 73 2b | 2f 2c 20 24 56 65 72 73 |it (/\s+|/, $Vers|
|00003b90| 69 6f 6e 29 3b 0a 58 24 | 56 65 72 73 69 6f 6e 20 |ion);.X$|Version |
|00003ba0| 3d 20 24 46 5b 31 5d 3b | 0a 58 75 6e 64 65 66 20 |= $F[1];|.Xundef |
|00003bb0| 40 46 3b 0a 58 0a 58 23 | 0a 58 23 20 53 65 74 20 |@F;.X.X#|.X# Set |
|00003bc0| 74 68 65 20 50 41 54 48 | 2c 20 73 6f 20 77 65 20 |the PATH|, so we |
|00003bd0| 68 61 76 65 20 61 20 63 | 68 61 6e 63 65 20 6f 66 |have a c|hance of|
|00003be0| 20 66 69 6e 64 69 6e 67 | 20 22 64 69 67 22 0a 58 | finding| "dig".X|
|00003bf0| 23 0a 58 24 45 4e 56 7b | 27 50 41 54 48 27 7d 20 |#.X$ENV{|'PATH'} |
|00003c00| 3d 20 27 2f 62 69 6e 3a | 2f 75 73 72 2f 62 69 6e |= '/bin:|/usr/bin|
|00003c10| 3a 2f 75 73 72 2f 75 63 | 62 3a 2f 75 73 72 2f 6c |:/usr/uc|b:/usr/l|
|00003c20| 6f 63 61 6c 2f 62 69 6e | 27 3b 0a 58 0a 58 26 6d |ocal/bin|';.X.X&m|
|00003c30| 61 69 6e 20 28 40 41 52 | 47 56 29 3b 0a 58 0a 58 |ain (@AR|GV);.X.X|
|00003c40| 65 78 69 74 20 28 30 29 | 3b 0a 58 0a 58 0a 58 23 |exit (0)|;.X.X.X#|
|00003c50| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003c60| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003c70| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003c80| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00003c90| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 0a 58 23 |########|#####.X#|
|00003ca0| 0a 58 73 75 62 20 6d 61 | 69 6e 20 7b 0a 58 20 20 |.Xsub ma|in {.X |
|00003cb0| 20 20 6c 6f 63 61 6c 20 | 28 40 64 6f 6d 61 69 6e | local |(@domain|
|00003cc0| 73 29 3b 0a 58 20 20 20 | 20 6c 6f 63 61 6c 20 28 |s);.X | local (|
|00003cd0| 24 6b 65 79 2c 20 24 76 | 61 6c 75 65 29 3b 0a 58 |$key, $v|alue);.X|
|00003ce0| 20 20 20 20 6c 6f 63 61 | 6c 20 28 24 6e 6f 74 5f | loca|l ($not_|
|00003cf0| 63 61 6e 6f 6e 69 63 61 | 6c 29 3b 0a 58 20 20 20 |canonica|l);.X |
|00003d00| 20 6c 6f 63 61 6c 20 28 | 25 64 6f 6e 65 29 3b 0a | local (|%done);.|
|00003d10| 58 20 20 20 20 6c 6f 63 | 61 6c 20 28 40 61 64 64 |X loc|al (@add|
|00003d20| 72 29 3b 0a 58 20 20 20 | 20 6c 6f 63 61 6c 20 28 |r);.X | local (|
|00003d30| 24 5f 29 3b 0a 58 0a 58 | 20 20 20 20 66 6f 72 65 |$_);.X.X| fore|
|00003d40| 61 63 68 20 28 40 5f 29 | 20 7b 0a 58 09 74 72 2f |ach (@_)| {.X.tr/|
|00003d50| 41 2d 5a 2f 61 2d 7a 2f | 3b 0a 58 09 70 75 73 68 |A-Z/a-z/|;.X.push|
|00003d60| 20 28 40 64 6f 6d 61 69 | 6e 73 2c 20 24 5f 29 3b | (@domai|ns, $_);|
|00003d70| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 23 |.X }.|X.X #|
|00003d80| 0a 58 20 20 20 20 23 20 | 45 76 65 72 79 62 6f 64 |.X # |Everybod|
|00003d90| 79 20 6e 65 65 64 73 20 | 6c 6f 63 61 6c 68 6f 73 |y needs |localhos|
|00003da0| 74 0a 58 20 20 20 20 23 | 0a 58 20 20 20 20 24 49 |t.X #|.X $I|
|00003db0| 4e 5f 41 7b 27 6c 6f 63 | 61 6c 68 6f 73 74 2e 27 |N_A{'loc|alhost.'|
|00003dc0| 7d 20 3d 20 27 31 32 37 | 2e 30 2e 30 2e 31 27 3b |} = '127|.0.0.1';|
|00003dd0| 0a 58 0a 58 20 20 20 20 | 26 64 6e 73 66 69 6e 64 |.X.X |&dnsfind|
|00003de0| 20 28 40 64 6f 6d 61 69 | 6e 73 29 3b 0a 58 0a 58 | (@domai|ns);.X.X|
|00003df0| 20 20 20 20 23 0a 58 20 | 20 20 20 23 20 41 20 72 | #.X | # A r|
|00003e00| 65 63 6f 72 64 73 0a 58 | 20 20 20 20 23 0a 58 20 |ecords.X| #.X |
|00003e10| 20 20 20 77 61 72 6e 20 | 22 2d 20 43 68 65 63 6b | warn |"- Check|
|00003e20| 69 6e 67 20 41 20 72 65 | 63 6f 72 64 73 5c 6e 22 |ing A re|cords\n"|
|00003e30| 3b 0a 58 0a 58 20 20 20 | 20 77 68 69 6c 65 20 28 |;.X.X | while (|
|00003e40| 28 24 6b 65 79 2c 20 24 | 76 61 6c 75 65 29 20 3d |($key, $|value) =|
|00003e50| 20 65 61 63 68 20 28 25 | 49 4e 5f 41 29 29 20 7b | each (%|IN_A)) {|
|00003e60| 0a 58 09 75 6e 64 65 66 | 20 25 64 6f 6e 65 3b 0a |.X.undef| %done;.|
|00003e70| 58 09 40 61 64 64 72 20 | 3d 20 73 70 6c 69 74 20 |X.@addr |= split |
|00003e80| 28 2f 3a 2f 2c 20 24 76 | 61 6c 75 65 29 3b 0a 58 |(/:/, $v|alue);.X|
|00003e90| 09 66 6f 72 65 61 63 68 | 20 28 40 61 64 64 72 29 |.foreach| (@addr)|
|00003ea0| 20 7b 0a 58 09 20 20 20 | 20 6e 65 78 74 20 69 66 | {.X. | next if|
|00003eb0| 20 28 24 64 6f 6e 65 7b | 24 5f 7d 29 3b 0a 58 09 | ($done{|$_});.X.|
|00003ec0| 20 20 20 20 24 64 6f 6e | 65 7b 24 5f 7d 20 3d 20 | $don|e{$_} = |
|00003ed0| 31 3b 0a 58 09 20 20 20 | 20 24 6e 6f 74 5f 63 61 |1;.X. | $not_ca|
|00003ee0| 6e 6f 6e 69 63 61 6c 20 | 3d 20 31 3b 0a 58 09 20 |nonical |= 1;.X. |
|00003ef0| 20 20 20 23 0a 58 09 20 | 20 20 20 23 20 43 68 65 | #.X. | # Che|
|00003f00| 63 6b 20 66 6f 72 20 6d | 61 74 63 68 69 6e 67 20 |ck for m|atching |
|00003f10| 50 54 52 20 72 65 63 6f | 72 64 0a 58 09 20 20 20 |PTR reco|rd.X. |
|00003f20| 20 23 0a 58 09 20 20 20 | 20 69 66 20 28 6c 65 6e | #.X. | if (len|
|00003f30| 67 74 68 20 28 24 49 4e | 5f 50 54 52 7b 24 5f 7d |gth ($IN|_PTR{$_}|
|00003f40| 29 29 20 7b 0a 58 09 09 | 23 0a 58 09 09 23 20 41 |)) {.X..|#.X..# A|
|00003f50| 20 62 6f 6f 6c 65 61 6e | 20 74 68 61 74 20 73 61 | boolean| that sa|
|00003f60| 79 73 20 74 68 69 73 20 | 6e 61 6d 65 20 69 73 20 |ys this |name is |
|00003f70| 6e 6f 74 20 74 68 65 20 | 63 61 6e 6f 6e 69 63 61 |not the |canonica|
|00003f80| 6c 0a 58 09 09 23 20 6e | 61 6d 65 0a 58 09 09 23 |l.X..# n|ame.X..#|
|00003f90| 0a 58 09 09 24 6e 6f 74 | 5f 63 61 6e 6f 6e 69 63 |.X..$not|_canonic|
|00003fa0| 61 6c 20 3d 0a 58 09 09 | 20 20 20 20 28 26 73 74 |al =.X..| (&st|
|00003fb0| 72 63 61 73 65 63 6d 70 | 20 28 24 6b 65 79 2c 0a |rcasecmp| ($key,.|
|00003fc0| 58 09 09 09 09 20 20 73 | 75 62 73 74 72 28 24 49 |X.... s|ubstr($I|
|00003fd0| 4e 5f 50 54 52 7b 24 5f | 7d 2c 20 30 2c 20 6c 65 |N_PTR{$_|}, 0, le|
|00003fe0| 6e 67 74 68 20 28 24 6b | 65 79 29 29 29 0a 58 09 |ngth ($k|ey))).X.|
|00003ff0| 09 20 20 20 20 20 21 3d | 20 30 29 3b 0a 58 09 20 |. !=| 0);.X. |
|00004000| 20 20 20 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 23 | } els|e {.X..#|
|00004010| 0a 58 09 09 23 20 45 78 | 70 6c 69 63 69 74 20 6c |.X..# Ex|plicit l|
|00004020| 6f 6f 6b 75 70 0a 58 09 | 09 23 0a 58 09 09 69 66 |ookup.X.|.#.X..if|
|00004030| 20 28 21 20 26 64 69 67 | 20 28 6a 6f 69 6e 20 28 | (! &dig| (join (|
|00004040| 27 2e 27 2c 20 72 65 76 | 65 72 73 65 20 28 73 70 |'.', rev|erse (sp|
|00004050| 6c 69 74 20 28 2f 5c 2e | 2f 2c 20 24 5f 29 29 2c |lit (/\.|/, $_)),|
|00004060| 0a 58 09 09 09 09 20 20 | 27 69 6e 2d 61 64 64 72 |.X.... |'in-addr|
|00004070| 2e 61 72 70 61 2e 27 29 | 2c 20 22 50 54 52 22 29 |.arpa.')|, "PTR")|
|00004080| 29 20 7b 0a 58 09 09 20 | 20 20 20 77 61 72 6e 20 |) {.X.. | warn |
|00004090| 22 57 41 52 4e 49 4e 47 | 20 2d 20 6e 6f 20 50 54 |"WARNING| - no PT|
|000040a0| 52 20 66 6f 72 20 5c 22 | 24 5f 5c 22 20 28 24 6b |R for \"|$_\" ($k|
|000040b0| 65 79 20 41 29 5c 6e 22 | 3b 0a 58 09 09 7d 0a 58 |ey A)\n"|;.X..}.X|
|000040c0| 09 20 20 20 20 7d 0a 58 | 09 20 20 20 20 70 75 73 |. }.X|. pus|
|000040d0| 68 20 28 40 68 6f 73 74 | 73 2c 20 73 70 72 69 6e |h (@host|s, sprin|
|000040e0| 74 66 20 28 22 25 30 33 | 64 2e 25 30 33 64 2e 25 |tf ("%03|d.%03d.%|
|000040f0| 30 33 64 2e 25 30 33 64 | 20 25 31 64 20 25 73 22 |03d.%03d| %1d %s"|
|00004100| 2c 0a 58 09 09 09 09 20 | 20 73 70 6c 69 74 20 28 |,.X.... | split (|
|00004110| 2f 5c 2e 2f 2c 20 24 5f | 29 2c 20 24 6e 6f 74 5f |/\./, $_|), $not_|
|00004120| 63 61 6e 6f 6e 69 63 61 | 6c 2c 20 24 6b 65 79 29 |canonica|l, $key)|
|00004130| 29 3b 0a 58 09 7d 0a 58 | 20 20 20 20 7d 0a 58 0a |);.X.}.X| }.X.|
|00004140| 58 20 20 20 20 23 0a 58 | 20 20 20 20 23 20 43 4e |X #.X| # CN|
|00004150| 41 4d 45 20 72 65 63 6f | 72 64 73 0a 58 20 20 20 |AME reco|rds.X |
|00004160| 20 23 0a 58 20 20 20 20 | 77 68 69 6c 65 20 28 28 | #.X |while ((|
|00004170| 24 6b 65 79 2c 20 24 76 | 61 6c 75 65 29 20 3d 20 |$key, $v|alue) = |
|00004180| 65 61 63 68 20 28 25 49 | 4e 5f 43 4e 41 4d 45 29 |each (%I|N_CNAME)|
|00004190| 29 20 7b 0a 58 09 23 0a | 58 09 23 20 43 68 65 63 |) {.X.#.|X.# Chec|
|000041a0| 6b 20 74 68 61 74 20 74 | 68 65 72 65 20 69 73 20 |k that t|here is |
|000041b0| 61 6e 20 41 20 72 65 63 | 6f 72 64 0a 58 09 23 0a |an A rec|ord.X.#.|
|000041c0| 58 09 69 66 20 28 64 65 | 66 69 6e 65 64 20 28 24 |X.if (de|fined ($|
|000041d0| 49 4e 5f 41 7b 24 76 61 | 6c 75 65 7d 29 29 20 7b |IN_A{$va|lue})) {|
|000041e0| 0a 58 09 20 20 20 20 40 | 61 64 64 72 20 3d 20 73 |.X. @|addr = s|
|000041f0| 70 6c 69 74 20 28 2f 3a | 2f 2c 20 24 49 4e 5f 41 |plit (/:|/, $IN_A|
|00004200| 7b 24 76 61 6c 75 65 7d | 29 3b 0a 58 09 7d 20 65 |{$value}|);.X.} e|
|00004210| 6c 73 65 20 7b 0a 58 09 | 20 20 20 20 23 0a 58 09 |lse {.X.| #.X.|
|00004220| 20 20 20 20 23 20 45 78 | 70 6c 69 63 69 74 20 6c | # Ex|plicit l|
|00004230| 6f 6f 6b 75 70 0a 58 09 | 20 20 20 20 23 0a 58 09 |ookup.X.| #.X.|
|00004240| 20 20 20 20 40 61 64 64 | 72 20 3d 20 26 64 69 67 | @add|r = &dig|
|00004250| 20 28 24 76 61 6c 75 65 | 2c 20 27 41 27 29 3b 0a | ($value|, 'A');.|
|00004260| 58 09 20 20 20 20 69 66 | 20 28 21 20 40 61 64 64 |X. if| (! @add|
|00004270| 72 29 20 7b 0a 58 09 09 | 77 61 72 6e 20 22 57 41 |r) {.X..|warn "WA|
|00004280| 52 4e 49 4e 47 20 2d 20 | 6e 6f 20 41 20 72 65 63 |RNING - |no A rec|
|00004290| 6f 72 64 20 5c 22 24 76 | 61 6c 75 65 5c 22 20 28 |ord \"$v|alue\" (|
|000042a0| 24 6b 65 79 20 43 4e 41 | 4d 45 29 5c 6e 22 3b 0a |$key CNA|ME)\n";.|
|000042b0| 58 09 09 6e 65 78 74 3b | 0a 58 09 20 20 20 20 7d |X..next;|.X. }|
|000042c0| 0a 58 09 7d 0a 58 09 75 | 6e 64 65 66 20 25 64 6f |.X.}.X.u|ndef %do|
|000042d0| 6e 65 3b 0a 58 09 66 6f | 72 65 61 63 68 20 28 40 |ne;.X.fo|reach (@|
|000042e0| 61 64 64 72 29 20 7b 0a | 58 09 20 20 20 20 6e 65 |addr) {.|X. ne|
|000042f0| 78 74 20 69 66 20 28 24 | 64 6f 6e 65 7b 24 5f 7d |xt if ($|done{$_}|
|00004300| 29 3b 0a 58 09 20 20 20 | 20 24 64 6f 6e 65 7b 24 |);.X. | $done{$|
|00004310| 5f 7d 20 3d 20 31 3b 0a | 58 09 20 20 20 20 70 75 |_} = 1;.|X. pu|
|00004320| 73 68 20 28 40 68 6f 73 | 74 73 2c 20 73 70 72 69 |sh (@hos|ts, spri|
|00004330| 6e 74 66 20 28 22 25 30 | 33 64 2e 25 30 33 64 2e |ntf ("%0|3d.%03d.|
|00004340| 25 30 33 64 2e 25 30 33 | 64 20 32 20 25 73 22 2c |%03d.%03|d 2 %s",|
|00004350| 0a 58 09 09 09 09 20 20 | 20 73 70 6c 69 74 20 28 |.X.... | split (|
|00004360| 2f 5c 2e 2f 2c 20 24 5f | 29 2c 20 24 6b 65 79 29 |/\./, $_|), $key)|
|00004370| 29 3b 0a 58 09 7d 0a 58 | 20 20 20 20 7d 0a 58 0a |);.X.}.X| }.X.|
|00004380| 58 20 20 20 20 23 0a 58 | 20 20 20 20 23 20 50 54 |X #.X| # PT|
|00004390| 52 20 72 65 63 6f 72 64 | 73 0a 58 20 20 20 20 23 |R record|s.X #|
|000043a0| 0a 58 20 20 20 20 77 68 | 69 6c 65 20 28 28 24 6b |.X wh|ile (($k|
|000043b0| 65 79 2c 20 24 76 61 6c | 75 65 29 20 3d 20 65 61 |ey, $val|ue) = ea|
|000043c0| 63 68 20 28 25 49 4e 5f | 50 54 52 29 29 20 7b 0a |ch (%IN_|PTR)) {.|
|000043d0| 58 09 40 68 20 3d 20 73 | 70 6c 69 74 20 28 2f 3a |X.@h = s|plit (/:|
|000043e0| 2f 2c 20 24 76 61 6c 75 | 65 29 3b 0a 58 09 66 6f |/, $valu|e);.X.fo|
|000043f0| 72 65 61 63 68 20 28 40 | 68 29 20 7b 0a 58 09 20 |reach (@|h) {.X. |
|00004400| 20 20 20 69 66 20 28 21 | 20 64 65 66 69 6e 65 64 | if (!| defined|
|00004410| 20 28 24 49 4e 5f 41 7b | 24 5f 7d 29 29 20 7b 0a | ($IN_A{|$_})) {.|
|00004420| 58 09 09 23 0a 58 09 09 | 23 20 45 78 70 6c 69 63 |X..#.X..|# Explic|
|00004430| 69 74 20 6c 6f 6f 6b 75 | 70 0a 58 09 09 23 0a 58 |it looku|p.X..#.X|
|00004440| 09 09 69 66 20 28 21 20 | 26 64 69 67 20 28 24 5f |..if (! |&dig ($_|
|00004450| 2c 20 22 41 22 29 29 20 | 7b 0a 58 09 09 20 20 20 |, "A")) |{.X.. |
|00004460| 20 77 61 72 6e 20 22 57 | 41 52 4e 49 4e 47 20 2d | warn "W|ARNING -|
|00004470| 20 6e 6f 20 41 20 72 65 | 63 6f 72 64 20 5c 22 24 | no A re|cord \"$|
|00004480| 5f 5c 22 20 28 24 6b 65 | 79 20 50 54 52 29 5c 6e |_\" ($ke|y PTR)\n|
|00004490| 22 3b 0a 58 09 09 7d 0a | 58 09 20 20 20 20 7d 0a |";.X..}.|X. }.|
|000044a0| 58 09 7d 0a 58 20 20 20 | 20 7d 0a 58 0a 58 20 20 |X.}.X | }.X.X |
|000044b0| 20 20 23 0a 58 20 20 20 | 20 23 20 53 6f 72 74 20 | #.X | # Sort |
|000044c0| 40 68 6f 73 74 73 0a 58 | 20 20 20 20 23 0a 58 20 |@hosts.X| #.X |
|000044d0| 20 20 20 40 68 6f 73 74 | 73 20 3d 20 73 6f 72 74 | @host|s = sort|
|000044e0| 20 28 40 68 6f 73 74 73 | 29 3b 0a 58 0a 58 20 20 | (@hosts|);.X.X |
|000044f0| 20 20 23 0a 58 20 20 20 | 20 23 20 4f 75 74 70 75 | #.X | # Outpu|
|00004500| 74 20 68 6f 73 74 73 0a | 58 20 20 20 20 23 0a 58 |t hosts.|X #.X|
|00004510| 20 20 20 20 24 64 61 74 | 65 5f 74 69 6d 65 20 3d | $dat|e_time =|
|00004520| 20 60 64 61 74 65 60 3b | 20 63 68 6f 70 20 28 24 | `date`;| chop ($|
|00004530| 64 61 74 65 5f 74 69 6d | 65 29 3b 0a 58 20 20 20 |date_tim|e);.X |
|00004540| 20 70 72 69 6e 74 20 28 | 0a 58 27 23 20 68 6f 73 | print (|.X'# hos|
|00004550| 74 73 20 2d 09 68 6f 73 | 74 2d 6e 61 6d 65 2f 49 |ts -.hos|t-name/I|
|00004560| 50 2d 61 64 64 72 65 73 | 73 20 64 61 74 61 20 62 |P-addres|s data b|
|00004570| 61 73 65 0a 58 23 0a 58 | 23 20 24 53 6f 75 72 63 |ase.X#.X|# $Sourc|
|00004580| 65 3a 20 2f 70 72 6f 6a | 2f 73 72 63 2f 69 73 63 |e: /proj|/src/isc|
|00004590| 2f 63 76 73 2d 31 2f 62 | 69 6e 64 2f 63 6f 6e 74 |/cvs-1/b|ind/cont|
|000045a0| 72 69 62 2f 6d 69 73 63 | 2f 64 6e 73 66 69 6e 64 |rib/misc|/dnsfind|
|000045b0| 2e 73 68 61 72 2c 76 20 | 24 0a 58 23 0a 58 23 20 |.shar,v |$.X#.X# |
|000045c0| 54 68 69 73 20 66 69 6c | 65 20 67 65 6e 65 72 61 |This fil|e genera|
|000045d0| 74 65 64 20 62 79 20 27 | 20 2e 20 22 5c 22 24 50 |ted by '| . "\"$P|
|000045e0| 72 6f 67 5c 22 20 24 56 | 65 72 73 69 6f 6e 2c 20 |rog\" $V|ersion, |
|000045f0| 6f 6e 20 24 64 61 74 65 | 5f 74 69 6d 65 22 20 2e |on $date|_time" .|
|00004600| 20 27 0a 58 23 20 44 6f | 6d 61 69 6e 73 20 73 65 | '.X# Do|mains se|
|00004610| 61 72 63 68 65 64 3a 0a | 58 23 09 27 20 2e 20 6a |arched:.|X#.' . j|
|00004620| 6f 69 6e 20 28 22 5c 6e | 23 5c 74 22 2c 20 40 64 |oin ("\n|#\t", @d|
|00004630| 6f 6d 61 69 6e 73 29 20 | 2e 20 27 0a 58 23 0a 58 |omains) |. '.X#.X|
|00004640| 27 29 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 65 61 |');.X.X | forea|
|00004650| 63 68 20 28 40 68 6f 73 | 74 73 29 20 7b 0a 58 09 |ch (@hos|ts) {.X.|
|00004660| 28 24 61 64 64 72 65 73 | 73 2c 20 24 64 75 6d 6d |($addres|s, $dumm|
|00004670| 79 2c 20 24 6e 61 6d 65 | 29 20 3d 20 73 70 6c 69 |y, $name|) = spli|
|00004680| 74 3b 0a 58 09 24 61 64 | 64 72 65 73 73 20 3d 20 |t;.X.$ad|dress = |
|00004690| 73 70 72 69 6e 74 66 20 | 28 22 25 64 2e 25 64 2e |sprintf |("%d.%d.|
|000046a0| 25 64 2e 25 64 22 2c 20 | 73 70 6c 69 74 20 28 2f |%d.%d", |split (/|
|000046b0| 5c 2e 2f 2c 20 24 61 64 | 64 72 65 73 73 29 29 3b |\./, $ad|dress));|
|000046c0| 0a 58 0a 58 09 23 0a 58 | 09 23 20 54 72 69 6d 20 |.X.X.#.X|.# Trim |
|000046d0| 74 68 65 20 74 72 61 69 | 6c 69 6e 67 20 64 6f 74 |the trai|ling dot|
|000046e0| 0a 58 09 23 0a 58 09 24 | 6e 61 6d 65 20 3d 7e 20 |.X.#.X.$|name =~ |
|000046f0| 73 2f 5c 2e 24 2f 2f 3b | 0a 58 0a 58 09 23 0a 58 |s/\.$//;|.X.X.#.X|
|00004700| 09 23 20 44 75 65 20 74 | 6f 20 74 68 65 20 65 64 |.# Due t|o the ed|
|00004710| 75 2e 61 75 2c 20 7a 6f | 6e 65 20 62 65 69 6e 67 |u.au, zo|ne being|
|00004720| 20 6f 66 66 69 63 69 61 | 6c 6c 79 20 6b 6e 6f 77 | officia|lly know|
|00004730| 6e 20 61 73 20 45 44 55 | 2e 41 55 2c 20 61 6c 6c |n as EDU|.AU, all|
|00004740| 0a 58 09 23 20 64 61 74 | 61 20 66 6f 72 20 61 6c |.X.# dat|a for al|
|00004750| 6c 20 64 6f 6d 61 69 6e | 73 20 75 6e 64 65 72 20 |l domain|s under |
|00004760| 74 68 69 73 20 7a 6f 6e | 65 20 69 73 20 72 65 74 |this zon|e is ret|
|00004770| 75 72 6e 65 64 20 77 69 | 74 68 20 45 44 55 2e 41 |urned wi|th EDU.A|
|00004780| 55 2c 0a 58 09 23 20 69 | 6e 20 61 6c 6c 20 75 70 |U,.X.# i|n all up|
|00004790| 70 65 72 63 61 73 65 2c | 20 62 79 20 44 4e 53 2e |percase,| by DNS.|
|000047a0| 20 20 57 65 20 64 6f 6e | 27 74 20 6c 69 6b 65 20 | We don|'t like |
|000047b0| 74 68 69 73 20 69 6e 20 | 2f 65 74 63 2f 68 6f 73 |this in |/etc/hos|
|000047c0| 74 73 2c 0a 58 09 23 20 | 73 6f 20 77 65 20 77 69 |ts,.X.# |so we wi|
|000047d0| 6c 6c 20 65 6e 64 65 61 | 76 6f 75 72 20 74 6f 20 |ll endea|vour to |
|000047e0| 66 6f 6c 64 20 74 6f 20 | 6c 6f 77 65 72 63 61 73 |fold to |lowercas|
|000047f0| 65 20 68 65 72 65 2e 0a | 58 09 23 0a 58 09 24 6e |e here..|X.#.X.$n|
|00004800| 61 6d 65 20 3d 7e 20 73 | 2f 45 44 55 2e 41 55 24 |ame =~ s|/EDU.AU$|
|00004810| 2f 65 64 75 2e 61 75 2f | 69 3b 0a 58 0a 58 09 24 |/edu.au/|i;.X.X.$|
|00004820| 73 68 6f 72 74 20 3d 20 | 24 6e 61 6d 65 3b 0a 58 |short = |$name;.X|
|00004830| 09 24 73 68 6f 72 74 20 | 3d 7e 20 73 2f 5c 2e 2e |.$short |=~ s/\..|
|00004840| 2a 24 2f 2f 3b 0a 58 0a | 58 09 70 72 69 6e 74 20 |*$//;.X.|X.print |
|00004850| 28 24 61 64 64 72 65 73 | 73 2c 20 22 5c 74 22 29 |($addres|s, "\t")|
|00004860| 3b 0a 58 09 69 66 20 28 | 6c 65 6e 67 74 68 20 28 |;.X.if (|length (|
|00004870| 24 61 64 64 72 65 73 73 | 29 20 3c 20 38 29 20 7b |$address|) < 8) {|
|00004880| 0a 58 09 20 20 20 20 70 | 72 69 6e 74 20 28 22 5c |.X. p|rint ("\|
|00004890| 74 22 29 3b 0a 58 09 7d | 0a 58 09 70 72 69 6e 74 |t");.X.}|.X.print|
|000048a0| 20 28 24 6e 61 6d 65 2c | 20 22 5c 74 22 29 3b 0a | ($name,| "\t");.|
|000048b0| 58 09 69 66 20 28 6c 65 | 6e 67 74 68 20 28 24 6e |X.if (le|ngth ($n|
|000048c0| 61 6d 65 29 20 3c 20 32 | 34 29 20 7b 0a 58 09 20 |ame) < 2|4) {.X. |
|000048d0| 20 20 20 70 72 69 6e 74 | 20 28 22 5c 74 22 29 3b | print| ("\t");|
|000048e0| 0a 58 09 7d 0a 58 09 70 | 72 69 6e 74 20 28 24 73 |.X.}.X.p|rint ($s|
|000048f0| 68 6f 72 74 2c 20 22 5c | 6e 22 29 3b 0a 58 20 20 |hort, "\|n");.X |
|00004900| 20 20 7d 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 | }.X | return |
|00004910| 30 3b 0a 58 7d 0a 58 0a | 58 0a 58 23 23 23 23 23 |0;.X}.X.|X.X#####|
|00004920| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00004930| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00004940| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00004950| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00004960| 23 23 23 23 23 23 23 23 | 23 0a 58 23 0a 58 73 75 |########|#.X#.Xsu|
|00004970| 62 20 64 6e 73 77 61 6e | 74 65 64 20 7b 0a 58 20 |b dnswan|ted {.X |
|00004980| 20 20 20 69 66 20 28 24 | 50 61 72 65 6e 74 20 6e | if ($|Parent n|
|00004990| 65 20 24 70 61 72 65 6e | 74 5f 7a 6f 6e 65 29 20 |e $paren|t_zone) |
|000049a0| 7b 0a 58 09 77 61 72 6e | 20 22 2d 20 53 65 61 72 |{.X.warn| "- Sear|
|000049b0| 63 68 69 6e 67 20 24 70 | 61 72 65 6e 74 5f 7a 6f |ching $p|arent_zo|
|000049c0| 6e 65 2c 20 66 72 6f 6d | 20 24 73 65 72 76 65 72 |ne, from| $server|
|000049d0| 5c 6e 22 3b 0a 58 09 24 | 50 61 72 65 6e 74 20 3d |\n";.X.$|Parent =|
|000049e0| 20 24 70 61 72 65 6e 74 | 5f 7a 6f 6e 65 3b 0a 58 | $parent|_zone;.X|
|000049f0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 69 66 20 | }.X.|X if |
|00004a00| 28 24 74 79 70 65 20 65 | 71 20 27 41 27 29 20 7b |($type e|q 'A') {|
|00004a10| 0a 58 09 24 49 4e 5f 41 | 7b 24 7a 6f 6e 65 7d 20 |.X.$IN_A|{$zone} |
|00004a20| 2e 3d 20 24 76 61 6c 75 | 65 20 2e 20 27 3a 27 3b |.= $valu|e . ':';|
|00004a30| 0a 58 20 20 20 20 7d 20 | 65 6c 73 69 66 20 28 24 |.X } |elsif ($|
|00004a40| 74 79 70 65 20 65 71 20 | 27 43 4e 41 4d 45 27 29 |type eq |'CNAME')|
|00004a50| 20 7b 0a 58 09 24 49 4e | 5f 43 4e 41 4d 45 7b 24 | {.X.$IN|_CNAME{$|
|00004a60| 7a 6f 6e 65 7d 20 3d 20 | 24 76 61 6c 75 65 3b 0a |zone} = |$value;.|
|00004a70| 58 20 20 20 20 7d 20 65 | 6c 73 69 66 20 28 24 74 |X } e|lsif ($t|
|00004a80| 79 70 65 20 65 71 20 27 | 50 54 52 27 29 20 7b 0a |ype eq '|PTR') {.|
|00004a90| 58 09 24 61 64 64 72 65 | 73 73 20 3d 20 24 7a 6f |X.$addre|ss = $zo|
|00004aa0| 6e 65 3b 0a 58 09 24 61 | 64 64 72 65 73 73 20 3d |ne;.X.$a|ddress =|
|00004ab0| 7e 20 73 2f 5c 2e 69 6e | 2d 61 64 64 72 5c 2e 61 |~ s/\.in|-addr\.a|
|00004ac0| 72 70 61 5c 2e 3f 24 2f | 2f 69 3b 0a 58 09 24 61 |rpa\.?$/|/i;.X.$a|
|00004ad0| 64 64 72 65 73 73 20 3d | 20 6a 6f 69 6e 20 28 27 |ddress =| join ('|
|00004ae0| 2e 27 2c 20 72 65 76 65 | 72 73 65 20 28 73 70 6c |.', reve|rse (spl|
|00004af0| 69 74 20 28 2f 5c 2e 2f | 2c 20 24 61 64 64 72 65 |it (/\./|, $addre|
|00004b00| 73 73 29 29 29 3b 0a 58 | 09 24 49 4e 5f 50 54 52 |ss)));.X|.$IN_PTR|
|00004b10| 7b 24 61 64 64 72 65 73 | 73 7d 20 2e 3d 20 24 76 |{$addres|s} .= $v|
|00004b20| 61 6c 75 65 20 2e 20 27 | 3a 27 3b 0a 58 20 20 20 |alue . '|:';.X |
|00004b30| 20 7d 0a 58 7d 0a 53 48 | 41 52 5f 45 4f 46 0a 24 | }.X}.SH|AR_EOF.$|
|00004b40| 54 4f 55 43 48 20 2d 61 | 6d 20 31 31 30 32 31 36 |TOUCH -a|m 110216|
|00004b50| 33 32 39 34 20 6d 61 6b | 65 68 6f 73 74 73 20 26 |3294 mak|ehosts &|
|00004b60| 26 0a 63 68 6d 6f 64 20 | 30 37 35 30 20 6d 61 6b |&.chmod |0750 mak|
|00004b70| 65 68 6f 73 74 73 20 7c | 7c 0a 65 63 68 6f 20 22 |ehosts |||.echo "|
|00004b80| 72 65 73 74 6f 72 65 20 | 6f 66 20 6d 61 6b 65 68 |restore |of makeh|
|00004b90| 6f 73 74 73 20 66 61 69 | 6c 65 64 22 0a 73 65 74 |osts fai|led".set|
|00004ba0| 20 60 77 63 20 2d 63 20 | 6d 61 6b 65 68 6f 73 74 | `wc -c |makehost|
|00004bb0| 73 60 3b 57 63 5f 63 3d | 24 31 0a 69 66 20 74 65 |s`;Wc_c=|$1.if te|
|00004bc0| 73 74 20 22 24 57 63 5f | 63 22 20 21 3d 20 22 34 |st "$Wc_|c" != "4|
|00004bd0| 39 31 33 22 3b 20 74 68 | 65 6e 0a 09 65 63 68 6f |913"; th|en..echo|
|00004be0| 20 6f 72 69 67 69 6e 61 | 6c 20 73 69 7a 65 20 34 | origina|l size 4|
|00004bf0| 39 31 33 2c 20 63 75 72 | 72 65 6e 74 20 73 69 7a |913, cur|rent siz|
|00004c00| 65 20 24 57 63 5f 63 0a | 66 69 0a 65 78 69 74 20 |e $Wc_c.|fi.exit |
|00004c10| 30 0a | |0. | |
+--------+-------------------------+-------------------------+--------+--------+